Cifrado de Scripts

En este capítulo, aprenderá cómo cifrar los módulos o scripts de FIRERPA que ha desarrollado. Este capítulo no trata sobre el cifrado de scripts en el lado del PC, sino sobre los scripts o módulos que se ejecutan en el entorno Python integrado de FIRERPA. Por ejemplo, los módulos en /data/usr/module/task, /data/usr/module/extension, o los scripts ejecutados con el comando Python integrado. Proporcionamos herramientas relevantes para ayudarle a realizar esto rápidamente. A través de este capítulo, aprenderá cómo proteger los scripts que ha desarrollado.

El cifrado de scripts se realiza convirtiendo el código a C con Cython y compilándolo en un archivo .so. Esto no tendrá un gran impacto en su rendimiento, pero solo recomendamos cifrar la lógica principal en lugar de todos los archivos de script. Además, no lo utilice para cifrar archivos de bibliotecas de terceros, ya que es inútil. Siempre debe seguir el principio de "cifrar solo su propia lógica".

Construir la Imagen de la Herramienta

Dependemos en gran medida de Docker, así que asegúrese de tener Docker listo antes de continuar. Ahora, clone https://github.com/firerpa/compiler y construya la imagen siguiendo la documentación o con el siguiente comando.

docker build -t compiler .

Cifrar el Código del Script

Use el siguiente comando para mapear el código fuente dentro de la imagen y compilarlo. Las arquitecturas (arch) soportadas incluyen arm, arm64, x86, x86_64, que corresponden a las diferentes arquitecturas del servidor FIRERPA. Las diferentes arquitecturas no son compatibles entre sí.

docker run -it --rm -v /source/dir:/data compiler:latest compile.sh --arch arm64 /data/my_important_script.py

Normalmente, después de ejecutar el comando, obtendrá un archivo my_important_script.cpython-39.so en el mismo directorio que su script. No renombre este archivo; si necesita usar otro nombre, debe cambiar directamente el nombre del script. Ahora, en su script publicado, puede eliminar el archivo de código fuente .py correspondiente y colocar el archivo .so en su lugar.

Atención

Si su código no es un módulo de FIRERPA (extension, task) y consta de un solo archivo, Python no puede ejecutar directamente el archivo `.so`. Necesitará escribir un script de entrada `.py` para importar e iniciar el archivo `.so` cifrado. Si es un módulo, simplemente colóquelo en el directorio correspondiente y reinicie.