pyo - Explorando y descompilando el bytecode de python
python open pyc file (6)
Además de lo que DevC escribió:
Uncompyle2 funciona con Python 2.7
con Uncompyle2, también puede descompilar desde la línea de comandos:
$ uncompyle2 compiled.pyc >> source.uncompyle2.py
para instalar Uncompyle2, haz
$ git clone https://github.com/wibiti/uncompyle2
$ cd uncompyle2
$ sudo ./setup.py install
Digamos que tengo:
>>> def test(a):
>>> print a
Ahora, quiero explorar cómo se ve la prueba en su forma compilada.
>>> test.func_code.co_code
''|/x00/x00GHd/x00/x00S''
Puedo obtener la forma desensamblada usando el módulo dis :
>>> import dis
>>> dis.dis(test)
2 0 LOAD_FAST 0 (a)
3 PRINT_ITEM
4 PRINT_NEWLINE
5 LOAD_CONST 0 (None)
8 RETURN_VALUE
¿Existe un decompilador de código abierto y mantenido que podría usar para convertir el código de bytes nuevamente en un código de Python legible?
actualización: gracias por sugerir descompilar, pero está desactualizado (python2.3) y ya nadie lo mantiene. ¿Hay algo para python2.5 o posterior?
Ahora también hay uncompyle6 que está escrito en Python y pycdc que está escrito en C ++.
Ambos manejan varias versiones del código de bytes de Python, incluidas las versiones de Python 2 y las versiones de Python 3.
Obtener uncompyle2 de github! :)
Uncompyle2 me funcionó con Python 2.7.
https://github.com/wibiti/uncompyle2
Rápido cómo usar uncompyle2, instálelo y luego
>>>import uncompyle2
>>> with open("decompiled.py","wb") as f:
... uncompyle2.uncompyle_file("compiled.pyc",f)
Se generará el código fuente de nuevo en decompile.py
Decompyle es un desensamblador y descompilador de Python que convierte el código de bytes de Python (.pyc o .pyo) de nuevo en una fuente de Python equivalente. La verificación del código producido (re-compilado) también está disponible.
UnPyc
http://sourceforge.net/projects/unpyc/
Es una bifurcación mantenida del antiguo descompilado actualizado para funcionar con 2.5 y 2.6.