J'ai cherché de haut en bas, mais je ne trouve pas de décompilateur qui fonctionnera pour Python 2.7 .pyc. Quelqu'un en connaît-il un qui fonctionnera pour Python 2.7? Merci
MISE À JOUR (2019-04-22) - Il semble que vous souhaitiez utiliser ncompyle6 de nos jours plutôt que les réponses que j'avais mentionnées à l'origine.
Cela semble fonctionner: http://code.google.com/p/unpyc/
Le problème 8 indique qu'il prend en charge 2.7: http://code.google.com/p/unpyc/updates/list
MISE À JOUR (2013-09-03) - Comme indiqué dans les commentaires et autres réponses, vous devriez regarder https://github.com/wibiti/uncompyle2 ou https: // github.com/gstarnberger/uncompyle au lieu de unpyc.
Au cas où quelqu'un aurait encore du mal avec cela, comme je l'ai été toute la matinée aujourd'hui, j'ai trouvé une solution qui fonctionne pour moi:
Instructions d'installation:
git clone https://github.com/gstarnberger/uncompyle.git
cd uncompyle/
Sudo ./setup.py install
Une fois le programme installé (remarque: il sera installé sur vos packages accessibles à l'ensemble du système Python packages, il devrait donc être dans votre $PATH
), vous pouvez récupérer vos fichiers Python comme ceci:
uncompyler.py thank_goodness_this_still_exists.pyc > recovered_file.py
Le décompilateur ajoute du bruit principalement sous forme de commentaires, mais je l'ai trouvé étonnamment propre et fidèle à mon code d'origine. Vous devrez supprimer une petite ligne de texte commençant par +++ vers la fin du fichier récupéré pour pouvoir exécuter votre code.
Decompyle ++ (pycdc) semble fonctionner pour une gamme de versions python: https://github.com/zrax/pycdc
Par exemple:
git clone https://github.com/zrax/pycdc
cd pycdc
make
./bin/pycdc Example.pyc > Example.py
Voici un excellent outil pour décompiler les fichiers pyc.
Il a été codé par moi et prend en charge python 1.0 - 3.3
Son basé sur uncompyle2 et decompyle ++
Ned Batchelder a publié un script court qui démasquera un fichier .pyc et démontera tous les objets de code qu'il contient, vous pourrez donc voir le bytecode Python. ressemble aux nouvelles versions de Python, vous devrez commenter les lignes qui définissent modtime
et l'imprimer (mais ne commentez pas la ligne qui définit moddate
).
Transformer cela en Python source serait un peu plus difficile, bien que théoriquement possible. Je suppose que tous ces programmes qui fonctionnent pour les anciennes versions de Python le font.