Ist es möglich, einige Informationen aus der .pyc-Datei zu erhalten, die aus einer .py-Datei generiert wird?
Ist es möglich, eine kompilierte .pyc-Datei in eine .py-Datei zu dekompilieren?
Howard
RichVel
Unkompilieren6 funktioniert für Python 3.x und 2.7 – empfohlene Option, da es das neueste Tool ist, das darauf abzielt, frühere Gabeln zu vereinheitlichen und sich auf automatisierte Komponententests zu konzentrieren. Die GitHub-Seite hat mehr Details.
- Wenn Sie Python 3.7+ verwenden, können Sie es auch versuchen dekompilieren3ein Fork von Uncompyle6, der sich auf 3.7 und höher konzentriert.
- Melden Sie GitHub-Probleme bei diesen Projekten bei Bedarf – beide führen Unit-Test-Suites auf einer Reihe von Python-Versionen aus.
Mit diesen Tools erhalten Sie Ihren Code zurück, einschließlich Variablennamen und Docstrings, aber ohne die Kommentare.
Die älteren Unkompilieren2 unterstützt nur Python 2.7. Dies hat vor einiger Zeit gut funktioniert, um den .pyc-Bytecode in .py zu dekompilieren, während unpyclib mit einer Ausnahme abstürzte.
-
Vielen Dank. Ich hatte versehentlich meine .py-Datei anstelle von .pyc gelöscht. Das hat mich davor bewahrt, es von Grund auf neu zu schreiben.
– Avmohan
9. Januar 2014 um 9:39 Uhr
-
Für diejenigen von Ihnen hier, weil Sie versehentlich die falsche Datei gelöscht haben, ich höchst Quellcodeverwaltung empfehlen!
– Andreas Palmer
1. April 2017 um 0:40 Uhr
-
^ Und wenn Sie PyCharm verwenden, können Sie im Projektbereich mit der rechten Maustaste auf Ihre Datei/Ihren Ordner klicken und zu Lokaler Verlauf > Verlauf anzeigen gehen, um Änderungen rückgängig zu machen. Lebensretter.
– mattshu
13. Oktober 2020 um 19:22 Uhr
-
-
Für VS Code-Benutzer gibt es keinen integrierten lokalen Verlauf wie PyCharm, aber es gibt einige Plugins, die dasselbe tun.
– RichVel
16. Juni 2021 um 10:01 Uhr
Du kannst es versuchen Einfacher Python-Decompiler. Es basiert auf Decompyle++ und Uncompyle2. Es unterstützt die Dekompilierung der Python-Versionen 1.0-3.3
Hinweis: Ich bin der Autor des obigen Tools.
-
Es macht seinen Job. Gute Arbeit. Übrigens, hast du dieses Tool in Python geschrieben?
– Shinzu
13. März 2015 um 17:40 Uhr
-
Hat bei mir gut funktioniert (einfaches Drag & Drop). Es stimmt, dass eine Linux-Distribution nett wäre, aber es ist nicht so schwer, eine Windows-Box zu öffnen.
– Brian Jackson
10. August 2017 um 16:00 Uhr
-
Letzte Veröffentlichung im Jahr 2015 und sieht aus, als wäre es Closed Source?
– Boris
23. Mai 2020 um 20:38 Uhr
Ja, das bekommst du mit unpyclib
das findet man auf pypi.
$ pip install unpyclib
Dann können Sie Ihre .pyc-Datei dekompilieren
$ python -m unpyclib.application -Dq path/to/file.pyc
-
Ich habe das versucht und es ist mit einer Ausnahme abgestürzt, bei einer ziemlich kleinen Datei ohne komplexen Code (Django settings.py) – uncompyle2 hat stattdessen gut funktioniert. -1 aus diesem Grund.
– RichVel
11. Februar 2013 um 8:25 Uhr
-
Es stürzte in Python 3.6 in lib\site-packages\unpyclib\application.py mit ab
print __copyright
– Warum wird die Python 2.7-Version von verwendetprint
ohne Klammer?– David Ching
7. Juni 2018 um 23:46 Uhr
-
@DavidChing
unpyclib
‘s erste und letzte Veröffentlichung war 2009man kann mit Sicherheit sagen, dass es sich um ein reines Python 2-Programm handelt.– Boris
23. Mai 2020 um 20:31 Uhr
Jawohl.
ich benutze unkompiliert6 dekompilieren (unterstützt sogar das neueste Python 3.8.0):
uncompyle6 utils.cpython-38.pyc > utils.py
und der Vergleich zwischen Ursprungs-Python und dekompiliertem Python sieht folgendermaßen aus:
Du kannst also sehen, SCHON FAST gleich ist der Dekompilierungseffekt SEHR GUT.
Kenneth Hoste
Decompyle++ (pycdc) war das einzige, das für mich funktioniert hat: https://github.com/zrax/pycdc
wurde in Decompile Python 2.7 .pyc vorgeschlagen
-
Und das hat bei mir für Code funktioniert, der mit Python 2.6 kompiliert wurde!
– David Mertens
15. Mai 2013 um 20:18 Uhr
G_M
Ja, es ist möglich.
Es gibt einen perfekten Open-Source-Python (.PYC)-Decompiler namens Decompyle++ https://github.com/zrax/pycdc/
Decompyle++ zielt darauf ab, kompilierten Python-Bytecode zurück in gültigen und für Menschen lesbaren Python-Quellcode zu übersetzen. Während andere Projekte dies mit unterschiedlichem Erfolg erreicht haben, ist Decompyle++ insofern einzigartig, als es versucht, Bytecode aus jeder Version von Python zu unterstützen.
-
Und das hat bei mir für Code funktioniert, der mit Python 2.6 kompiliert wurde!
– David Mertens
15. Mai 2013 um 20:18 Uhr
Dharman
Ich bin seit ein paar Stunden dabei und habe endlich eine Lösung mit Decompyle++:
- Besuch
https://cmake.org/download/
und CMake installieren. - Besuch
https://github.com/zrax/pycdc
und schnapp dir eine Kopie dieses Repos:pycdc-master
. - addieren
C:\Program Files\CMake\bin
zu Ihren Systemumgebungsvariablen unter PATH.
Ich schlage vor, Sie zu setzen pycdc-master
Ordner in einen anderen Ordner, wie anotherFolder
.
Jetzt können Sie diese Befehle in der Befehlszeile ausführen:
cd anotherFolder
um in den Ordner zu gehen, der hatpycdc-master
drin.cmake pycdc-master
cd ../
um ein Verzeichnis nach oben zu gehen,- dann:
cmake --build anotherFolder
pycdc.exe
wird dann drin sein anotherFolder\Debug
.
Mach sowas wie pycdc.exe onlyhopeofgettingmycodeback.pyc
in einer Konsole und druckt den Quellcode aus. Ich hatte Python 3.9.6-Quellcode und nichts anderes funktionierte.
-
Normalerweise erstellen Sie die
build
Ordner im Repo und dann imbuild
Ordner, den Sie aufrufencmake ..
– Dmytro Ovdijenko
7. Oktober 2021 um 20:47 Uhr