51 votes

Décompilateur Python gratuit qui n'est pas un service en ligne ?

Existe-t-il une bibliothèque ou une application permettant de décompiler le bytecode de Python 2.4+ pour obtenir le code source ?

Une recherche a révélé :

  • http://depython.net - un service en ligne sur lequel vous devez télécharger un fichier pyc ou pyo
  • le site module dis - vous permet de désassembler, mais pas de décompiler le bytecode
  • décompiler.py - ne fonctionne que pour 1.5.2 ou 2.0
  • decompyle - un service de décompilation en ligne que vous devez payer et sur lequel vous devez télécharger votre pyc

51voto

balajeerc Points 664

Cela m'a sauvé la vie une fois : https://github.com/wibiti/uncompyle2

J'espère que cela vous aidera

15voto

Sec Points 2786

Comme d'autres l'ont dit, la version gratuite de decompyle ne fonctionne que jusqu'à la 2.3. Mais vous pouvez parfois le faire fonctionner en convertissant votre pyc le plus récent au vieux format de marshalling.

Le script suivant prend deux arguments, le fichier d'entrée et le fichier de sortie, et le convertit en quelque chose sur lequel decompyle va au moins se faire les dents.

#!/usr/bin/python
import marshal
import sys

MAGIC23 = ';\xf2\r\n'

def load_pyc(filename):
        f = open(filename, 'rb')
        try:
                magic = f.read(4)
                timestamp = f.read(4)
                codeobject = marshal.load(f)
        finally:
                f.close()
                return magic, timestamp, codeobject

def dump_pyc_23(filename, timestamp, codeobject):
        assert len(timestamp)==4
        f = open(filename, 'wb')
        try:
                f.write(MAGIC23)
                f.write(timestamp)
                marshal.dump(codeobject, f, 0)
        finally:
                f.close()

magic, timestamp, codeobject = load_pyc(sys.argv[1])
dump_pyc_23(sys.argv[2], timestamp, codeobject)

Bonne chance !

4voto

Can Berk Güder Points 39887

J'ai utilisé decompyle (le paquet Ubuntu, pas le service en ligne, je ne sais pas si c'est la même chose) dans le passé et j'ai été plus que satisfait des résultats. Il m'a permis d'économiser des heures de travail après un rm *.py au lieu de rm *.pyc .

4voto

washeck Points 109

J'ai une bonne expérience avec UnPyc - il a parfaitement récupéré mon Django models.py.

4voto

paloturk Points 49

Vous ne voulez pas d'un service en ligne mais depython.com est un bon service de décompilation Python. Essayez-le.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X