Pregunta

Si realmente hay una 'mejor' forma, ¿cuál es la mejor manera de enviar una aplicación python y garantizar que las personas no puedan (fácilmente) aplicar ingeniería inversa a sus algoritmos / seguridad / trabajo en general?

Si no hay una 'mejor' forma, ¿cuáles son las diferentes opciones disponibles?

Antecedentes: Me encanta codificar en Python y me encantaría lanzar más aplicaciones con él. Una cosa que me pregunto es la posibilidad de que las personas eludan cualquier código de licencia que puse, o puedan simplemente estafar toda mi base de origen. He oído hablar de Py2Exe y aplicaciones similares, pero tengo curiosidad por saber si hay formas 'preferidas' de hacerlo, o si este problema es solo una realidad.

¿Fue útil?

Solución

Seguridad a través de la oscuridad nunca funciona. Si debe utilizar una licencia de propiedad, hacerla cumplir por ley, no por intentos de ofuscación a medias.

Si le preocupa que aprendan su algoritmo de seguridad (por ejemplo, criptografía), se aplica lo mismo. Los algoritmos de seguridad reales y útiles (como AES) son seguros aunque el algoritmo sea completamente conocido.

Otros consejos

Incluso si usa un lenguaje compilado como C # o Java, las personas pueden realizar ingeniería inversa si están motivados y son técnicamente competentes. La ofuscación no es una protección confiable contra esto.

Puede agregar la prohibición de ingeniería inversa a su contrato de licencia de usuario final para su software. La mayoría de las compañías propietarias hacen esto. Pero eso no evita la violación, solo le brinda un recurso legal.

La solución best es ofrecer productos y servicios en los que el acceso del usuario para leer su código no perjudique su capacidad de vender su producto o servicio. Base su negocio en el servicio provisto o en la suscripción a actualizaciones periódicas de datos, en lugar del código en sí.

Ejemplo: Slashdot realmente pone a disposición su código para su sitio web. ¿Esto perjudica su capacidad para ejecutar su sitio web? No.

Otro remedio es establecer su precio de manera que el esfuerzo de piratear su código sea más costoso que simplemente comprar licencias legítimas para usar su producto. Joel Spolsky ha hecho una recomendación al respecto en sus artículos y podcasts.

Envío de una aplicación comercial de escritorio mac en Python, hacemos exactamente lo que se describe en las otras respuestas; protégete por ley con un EULA decente, no por ofuscarte.

Nunca hemos tenido problemas con la gente que realiza ingeniería inversa de nuestro código. Y si lo hacemos, estoy seguro de que podemos emprender acciones legales. Entonces sí, es un hecho de la vida. Pero uno con el que no es demasiado difícil vivir. Simplemente obtenga un abogado decente que escriba un EULA decente.

La palabra que estás buscando es ofuscar. Un rápido google revela:

http://www.lysator.liu.se/~astrand/ proyectos / pyobfuscate /

pero:

a) Si la infracción de derechos de autor se convierte en un problema, la ley está de su lado (siempre que incluya los avisos de derechos de autor apropiados en todos los archivos).

b) También es posible obtener ganancias en aplicaciones de código abierto si eres inteligente al respecto.

c) Si desea que su Propiedad Intelectual sea verdaderamente segura, entonces la única respuesta es no dejar que nadie la tenga en primer lugar: escriba su aplicación como una aplicación web (recomiendo usar django) y solo su web El proveedor de alojamiento tiene acceso a su código.

py2exe

En Windows, py2exe es una forma de enviar código a los usuarios finales, py2exe incluye el intérprete de python, los dlls necesarios y su código compilado en el código de bytes de python.

Estas son las instrucciones de código de bytes de Python para obtener una idea de cómo se ve:

http://www.python.org/doc/2.5 .2 / lib / bytecodes.html

O puede usar dis para desmontar algunos archivos pyc / pyo.

Entonces, usar py2exe es similar a distribuir archivos compilados de python (pyc / pyo).

Compilador Shedskin C ++

El compilador Shedskin compila un subconjunto de python a C ++ que puede compilar en código nativo utilizando cualquier compilador.

pypy

No sé demasiado sobre PyPy. Según sus documentos, Pypy puede generar código C.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top