Esta herramienta es solo la última implementación que rompe las capas de cifrado y ofuscación que Dropbox se aplica a su intérprete Python modificado. Se basa en el trabajo que el autor hizo hace muchas, muchas lunas, así como trabajos públicos realizados por otros. Para obtener más información, consulte el blog Post.
Liberación inicial.
El código se actualizó para regenerar la base de datos de Opcode utilizando Python 3.7. Ahora también verifica la versión de Uncompyle6 que se está instalando (> = 3.5.x) de modo que le da un error cuando Uncompyle6 está instalado pero está muy desactualizado. Se solucionaron varios errores en la generación de la mapeo de código de operación. Gracias a @slinkinone por enviarme correos electrónicos y ayudarme a depurar algunos de los problemas.
uncompyle6 esté instalado. Puedes hacer esto con: pip3 install uncompyle6
Ejecute el script de fetchdeps.sh Bash. Esto buscará el código fuente de Python, así como descargará la última versión del Dropbox para Linux Tarball. El código fuente de Python solo se necesita si uno quiere regenerar la base de datos de Opcode.
Tenga en cuenta que Python 3.7 es un requisito para las dos siguientes llamadas a trabajar, ya que los cambios se realizaron a >=3.8 tipos de código subyacentes, etc.
Ejecute lo siguiente para desempaquetar, descifrar y descompilar la mayor parte del código fuente de Dropbox Python. Extraerá a un directorio predeterminado out :
python3 unpacker.py --dropbox-zip `find . -name python-packages-37.zip`
find . -name python-packages-37.zip | xargs python3.7 gendb.py --python-dir tmp/Python-3.7.4/ --db opcode.db --dropbox-zip
python3 patchzip.py --dropbox-zip `find . -name python-packages-37.zip` --output-zip out.zip
mv out.zip ~/.dropbox-dist/dropbox-lnx_64-71.4.108/python-packages-37.zip
~/.dropbox-dist/dropbox-lnx_64-71.4.108/dropbox
python3 checkdb.py --db opcodemap.db
Eso producirá algo como lo siguiente:
...
| ============================== | ======= | ======= |
| OPCODE | PYTHON | DROPBOX |
| ============================== | ======= | ======= |
| POP_TOP | 1 | 24 |
| ROT_TWO | 2 | 1 |
| ROT_THREE | 3 | 83 |
| DUP_TOP | 4 | 66 |
| UNARY_POSITIVE | 10 | 77 |
...
setenv.py . Para obtener más información sobre esto, consulte el BlogPost nuevamente. Modifique a voluntad y luego úselo así para configurar el entorno y ejecutar Dropbox. eval `python3 setenv.py`
~/.dropbox-dist/dropbox-lnx_64-71.4.108/dropbox