Estoy construyendo un programa interpretado bastante complejo en Python. He estado trabajando en la mayoría de este código para otros fines durante unos meses y, por lo tanto, no quiero que mi cliente pueda simplemente copiarlo e intentar venderlo, ya que creo que vale la pena.
El problema es que necesito que la secuencia de comandos se ejecute en un servidor por el que mi cliente está pagando, por lo tanto, ¿hay alguna forma de asegurar una carpeta particular en la máquina del acceso raíz, o hacer que solo un uso en particular pueda acceder al directorio? ? El sistema operativo es Ubuntu.
python
code-security
Mike Partridge
fuente
fuente
root
puedes hacerlo todo .Respuestas:
Licenciarlo.
Realmente, eso es todo!
fuente
Siempre puede compilar todos sus archivos para byte code pyc. Hay descompiladores que pueden generar código fuente, pero nada serio.
Sin embargo, eso solo resolverá la capacidad de leer el código de su programa. Para protegerlo, la única forma es licenciarlo como dijo Nightcracker, porque incluso si compiló su código, digamos código de máquina, si su trabajo no está protegido por una licencia, aún puede comercializarse contra su voluntad.
En pocas palabras, compilar en código de bytes y, lo que es más importante, licenciarlo
fuente
Utiliza Cython. Esto le permitirá compilar su programa como un ejecutable nativo. Entonces debería ser mucho más difícil de robar.
En cuanto al directorio, el único consejo que puedo darle es asegurarse de que sus permisos estén configurados correctamente. Las ACL pueden ser su amigo, aunque no estoy 100% seguro de que puedan restringir el acceso de root a un archivo. Incluso si pudieran, root podría simplemente cambiar el permiso. Es root, es dios, así es como funcionan estas cosas.
http://www.korokithakis.net/node/109
fuente
Como mostró el usuario anterior, los desensambladores pueden recuperar el código, pero aún no es muy legible (al menos no para los desensambladores de código abierto).
Estaba pensando en esto, y una forma en que creo que podría resolver este problema (si llama un problema al código de apertura forzada) es escribir un script de refactorización automática. Esto sería bastante simple en realidad. Simplemente alimentaría el script a su módulo y cambiaría el nombre de todas las variables específicas del módulo. Esto, junto con solo liberar el archivo compilado, haría mucho para ofuscar su código.
Al hacer una búsqueda en el PyPI, encontré esto: http://pypi.python.org/pypi/pyfuscate/0.1 . Debes comprobarlo y a otros les gusta e informar: D
Además: también debe licenciarlo, por supuesto.
fuente
Sugeriría licencias también. Además de las licencias, cifremos el código fuente de las rutinas principales utilizando un algoritmo de clave asimétrica para que solo la máquina de su cliente pueda ejecutarlo. Una de las claves del par puede ser algo obtenido del hardware (ejemplo: número de serie de la tarjeta de red) de la máquina de su cliente. Use la otra clave en el par para descifrar el código fuente cuando ejecute el programa. Tenga en cuenta que el único entregable en texto sin formato sería la rutina de descifrado y el resto estaría en texto cifrado.
De esta manera, su cliente puede copiar y pegar su código aparentemente galimatías, pero no puede ejecutarlo en otro lugar. Sin embargo, mi sugerencia no es completamente a prueba de balas: el intérprete puede almacenar el programa descifrado en algún lugar de la memoria. Entonces es posible que algún hacker recupere su programa en texto sin formato durante la ejecución, supongo.
En cuanto a evitar que las carpetas accedan a la raíz, estoy de acuerdo en que no se puede evitar que la raíz acceda a ningún archivo / carpeta.
fuente
ruby
/python
/node
con un programa personalizado que refleje la API de ejecución y genere el código.La licencia es la mejor respuesta aquí. Dicho esto, ¿por qué tiene que funcionar con su equipo? Si es tan importante, es posible que desee buscar un servicio y crear algún tipo de API de servicio en torno a cosas para que la gente ni siquiera pueda ver su propiedad intelectual para robarlo.
fuente