Odpowiedzi:
Uncompyle6 działa dla Pythona 3.x i 2.7 - zalecana opcja, ponieważ jest to najnowsze narzędzie, mające na celu ujednolicenie wcześniejszych forków i skupienie się na automatycznym testowaniu jednostkowym. Strona GitHub zawiera więcej szczegółów.
Starszy Uncompyle2 obsługuje tylko Python 2.7. Jakiś czas temu udało mi się to dobrze zdekompilować kod bajtowy .pyc do .py, podczas gdy unpyclib zawiesił się z wyjątkiem.
Dzięki tym wszystkim narzędziom odzyskasz kod, w tym nazwy zmiennych, ale bez komentarzy.
Tak, możesz to zdobyć, unpyclib
które można znaleźć na pypi .
$ pip install unpyclib
Następnie możesz zdekompilować swój plik .pyc
$ python -m unpyclib.application -Dq path/to/file.pyc
print __copyright
- dlaczego używa wersji Python 2.7 print
bez nawiasów?
unpyclib
Pierwsze i ostatnie wydanie @DavidChing miało miejsce w 2009 roku , można śmiało powiedzieć, że jest to program wyłącznie w Pythonie 2.
Możesz wypróbować Easy Python Decompiler . Opiera się na Decompyle ++ i Uncompyle2. Obsługuje dekompilację wersji Pythona 1.0-3.3
Uwaga: jestem autorem powyższego narzędzia.
Decompyle ++ (pycdc) był jedynym, który działał dla mnie: https://github.com/zrax/pycdc
zasugerowano w Decompile Python 2.7 .pyc
Tak .
Używam uncompyle6 dekompilować (nawet obsługiwać najnowszy Python 3.8.0):
uncompyle6 utils.cpython-38.pyc > utils.py
a porównanie oryginalnego i zdekompilowanego pythona wygląda następująco:
więc widać, PRAWIE taki sam, efekt dekompilacji jest BARDZO DOBRY .
Tak to mozliwe.
Istnieje doskonały dekompilator Pythona (.PYC) typu open source, o nazwie Decompyle ++ https://github.com/zrax/pycdc/
Decompyle ++ ma na celu przetłumaczenie skompilowanego kodu bajtowego Pythona z powrotem na prawidłowy i czytelny dla człowieka kod źródłowy Pythona. Podczas gdy inne projekty osiągnęły to z różnym sukcesem, Decompyle ++ jest wyjątkowy, ponieważ stara się obsługiwać kod bajtowy z dowolnej wersji Pythona.
Zainstaluj za pomocą pip install pycompyle6
pycompyle6 nazwa_pliku.pyc