uncompyle6 pyo open hacks facebookhacks descompilar descompilador decompile python decompiling

pyo - Descompilador de Python gratuito que no es un servicio en línea?



python open pyc file (9)

Aquí hay un poco más de información sobre decompyle : este es el mismo software que se convirtió en el servicio decompyle comercial. Solía ​​ser de código abierto y una versión anterior está disponible / mantenida como un paquete Debian (incluido el código fuente).

Descompilará Python hasta la versión 2.3, pero no 2.4+.

¿Existe una biblioteca o aplicación que pueda descompilar Python 2.4+ bytecode para obtener el código fuente?

Una búsqueda reveló:

  • http://depython.net - un servicio en línea que necesita para cargar un archivo pyc o pyo a
  • el módulo dis - le permite desarmar, pero no descompilar bytecode
  • decompile.py - funciona solo para 1.5.2 o 2.0
  • decompyle - un servicio descompilado en línea que debe pagar y subir su pyc a

Estoy increíblemente sorprendido con la precisión de depython.net

Lo que creo que hacen es usar el módulo dis y reconstruir tu código con él. Tendrás que encontrar la forma de hacerlo o alguien que ya haya escrito el algoritmo.


Sin embargo, he usado decompyle (el paquete de Ubuntu, no el servicio en línea, no sé si son lo mismo) en el pasado y estaba más que satisfecho con los resultados. Me ahorró horas de trabajo después de una rm *.py lugar de rm *.pyc .


Como otros dijeron, la versión gratuita de decompyle solo funciona hasta 2.3. Pero a veces puede hacer que funcione al convertir su pyc más nuevo al formato de clasificación anterior.

La siguiente secuencia de comandos toma dos argumentos, la entrada y el archivo de salida, y los convierte en algo que decompyle por lo menos probará.

#!/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)

¡Buena suerte!


Hay un tenedor de decompyle llamado unpyc que ha visto alguna actividad recientemente. Intenté usarlo con algunos archivos pyc pero no funcionó con ellos.


No desea un servicio en línea, pero depython.com es un buen servicio de descompilación de Python. Darle una oportunidad.



Para otros, en esta lamentable situación puedo confirmar que uncompyle2 ahora funciona con Python 2.7 (y solo 2.7 parece en este momento) y me salvó de un accidente desagradable (y sí, debería haber estado usando el control de fuente).


Tengo una buena experiencia con UnPyc : recuperó perfectamente mi Django models.py.