Essa ferramenta é apenas a mais recente implementação que quebra as camadas de criptografia e ofuscação que o Dropbox se aplica ao seu intérprete de Python modificado. É baseado no trabalho que o autor fez muitas, muitas luas atrás, bem como no trabalho público realizado por outras pessoas. Para mais informações, consulte o post do blog.
Liberação inicial.
O código foi atualizado para regenerar o banco de dados OPCode usando o Python 3.7. Agora, ele também verifica a versão do UNCMPYLE6 que está sendo instalada (> = 3.5.x), de modo que ela dê um erro quando o UNCOMPYLE6 é instalado, mas está muito desatualizado. Vários bugs foram corrigidos na geração do mapeamento do código OPC. Obrigado ao @slinkinone por me enviar e-mails e me ajudar a depurar alguns dos problemas.
uncompyle6 está instalado. Você pode fazer isso com: pip3 install uncompyle6
Execute o script de bash fetchdeps.sh incluído. Isso buscará o código -fonte do Python, além de baixar a versão mais recente do Dropbox for Linux Tarball. O código -fonte do Python é necessário apenas se alguém quiser regenerar o banco de dados OPCODE.
Observe que o Python 3.7 é um requisito para que as duas chamadas seguintes funcionem à medida que as alterações foram feitas para >=3.8 tipos de código subjacentes etc.
Execute o seguinte para descompactar, descriptografar e descompilar a maior parte do código -fonte do Dropbox Python. Extrairá para um diretório padrão 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
Isso renderá algo como o seguinte:
...
| ============================== | ======= | ======= |
| 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 mais informações sobre isso, consulte o post do blog novamente. Modifique à vontade e use -o assim para configurar o ambiente e executar o Dropbox. eval `python3 setenv.py`
~/.dropbox-dist/dropbox-lnx_64-71.4.108/dropbox