2009-02-23 34 views
35

¿Conoces alguna herramienta que pueda ayudarme a ofuscar el código python?Ofuscación del código Python

+99

¿Convertirlo a Perl? Boom, boom, gracias por escuchar, estoy aquí toda la semana :-) – paxdiablo

+1

Duplicado: http://stackoverflow.com/questions/261638/how-do-i-protect-python-code –

+0

Y más discusión general: http : //stackoverflow.com/questions/164137/how-do-i-deploy-a-python-desktop-application – tzot

Respuesta

5

En muchas situaciones que pueda enviar archivos byte-compilado .pyc en lugar de los archivos de origen .py. Esto te da un cierto nivel de ofuscación. Como lo sugiere el piadoso LÉAME, esto tiene limitaciones. Pero puede combinar los dos enfoques.

15

Su espacio de problema no está especificado. ¿Es esto para una aplicación de línea de comandos? ¿Se supone que este código debe usarse como una biblioteca?

Además de las otras dos respuestas, puede insertar el código en un archivo binario. Cuando comienza, decodifica el código y evalúa la cadena. Esto también funciona para una extensión de biblioteca compartida. También podría hacer eso con código de bytes, creo, pero no sería tan simple como llamar a Py_EvalCode.

py2exe o freeze son otra solución, que convierte el código en un ejecutable. Simplemente incluye el código en el binario y no hace ningún tipo de obstrucción, pero aún es más difícil que abrir un archivo .py.

Puede escribir el código en Cython, que es similar a Python y escribe archivos de extensión de Python en C, para usar como .so. Quizás sea el más difícil de estos para realizar ingeniería inversa y aún así proporcionarle un lenguaje de alto nivel para el desarrollo.

Son todos pirateables, como todas las soluciones. ¿Cuán difícil es para ti querer que sea?

+6

+1 para Cython, que he usado recientemente y encontré que es bastante bueno en Que hace. – Dan

+0

¿Cuál es la solución más simple de usar, si simplemente no quiero que sea fácil 'descompilar'? – Basj

4

La biblioteca estándar de Python incluye compileall.py. Puede ejecutar esto en un directorio y generará archivos .pyc para todos sus archivos fuente. Los archivos .pyc solo incluirán bytecode y docstrings, y eliminarán todos los comentarios. Luego puede copiar este directorio y luego ejecutar algo como rm -rf $(find . -name .py) para eliminar los archivos fuente originales.

2

Su mejor opción es compilarlo usando Shed Skin, un compilador experimental Python-to-C++.

+0

También está Pypy, pero no está documentado y es muy limitado en el código que acepta. – Antimony

+0

@Antimony: ¿Estás hablando de RPython?PyPy (que usa RPython) es una implementación completa de Python, y no está limitada en absoluto en el código que acepta. –

+0

@John Sí, estoy hablando de RPython. Es parte del proyecto PyPy. – Antimony

6

De hecho, encontré un proyecto muy bonito que básicamente convierte Python en C++ y crea un archivo binario estáticamente vinculado.

mira esto: http://www.nuitka.net/

0

A pesar de que no hace la ofuscación, esta Python recipe funciona muy bien para reducir al mínimo el tamaño del código Python, incluyendo excluyendo los comentarios.

Cuestiones relacionadas