web-dev-qa-db-fra.com

Décompiler Python 2.7 .pyc

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

41
suffa

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.

16
Mike Driscoll

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:

Décompresser

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.

84
Milosz

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
26
Erik

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 ++

http://sourceforge.net/projects/easypythondecompiler/

11
Extreme Coders

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.

3
Michael Hoffman