Es posible que no desee que sus secuencias de comandos cruciales de Python sufran ingeniería inversa por parte de actores malintencionados. Así es como puede protegerlo.
Python es muy legible y tiene un uso generalizado. Si bien esta legibilidad fomenta la colaboración, aumenta el riesgo de acceso no autorizado y uso indebido. Sus competidores o actores maliciosos pueden replicar sus algoritmos y lógica patentada sin las protecciones adecuadas. Esto afectará negativamente la integridad de su software y la confianza de sus usuarios.
La implementación de medidas de seguridad sólidas, como la ofuscación y la verificación de licencias, fortalece su software contra amenazas potenciales. Proteger los scripts de Python no es solo una práctica; es una estrategia fundamental para garantizar la confidencialidad de sus innovaciones y mantener la confianza de sus usuarios en el panorama digital.
Entendiendo Pyarmor
Pyarmor es una biblioteca de línea de comandos. Ayuda a proteger y ofuscar los scripts y paquetes de Python. Transforma el código Python original en una forma que es más difícil de entender mientras mantiene su funcionalidad. El proceso de ofuscación cambia el nombre de variables, funciones y clases a nombres no descriptivos. También elimina comentarios y reestructura el código. Esto hace que el código sea difícil de aplicar ingeniería inversa, manipular o copiar.
Pyarmor puede asegurar secuencias de comandos de Python individuales y paquetes completos e incluso agregar verificación de licencia a su código.
Instalación de la biblioteca de Pyarmor
Pyarmor figura en el índice de paquetes de Python (PyPI). Usa pip para instalarlo ejecutando el siguiente comando:
pip install pyarmor
No es obligatorio que instale Pyarmor en el mismo directorio que aloja su proyecto. Puede instalarlo en cualquier lugar de su computadora y poder asegurar cualquier script de Python desde cualquier directorio.
Sin embargo, si desea ejecutar los scripts seguros sin tener que instalar Pyarmor en la máquina de destino, debe instalarlo en el mismo directorio que aloja su proyecto. Esto se debe a que los scripts protegidos contendrán referencias al tiempo de ejecución de Pyarmor, que deberá estar presente para ejecutar los scripts.
Protección de secuencias de comandos de Python individuales
Asegurar scripts individuales usando Pyarmor es simple. El siguiente script que suma dos números servirá como ejemplo.
defadd_numbers(num1, num2):
result = num1 + num2
print("The sum of {} and {} is: {}".format(num1, num2, result))
# Example usage
num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
add_numbers(num1, num2)
Use la línea de comando para navegar al directorio en el que ha instalado Pyarmor. Luego ejecute el siguiente comando para cifrar y ofuscar su secuencia de comandos. Reemplazar principal.py con el nombre de su guión.
pyarmor gen --output dist main.py
Después de ejecutar el comando, Pyarmor crea una nueva carpeta llamada dist. En su interior reside su secuencia de comandos segura.
Abra el script protegido para ver su contenido.
La captura de pantalla anterior muestra el resultado después de que Pyarmor ofusca y cifra el script de adición simple. Ahora no puede saber qué hace el script con solo mirarlo.
Para ejecutar el script seguro, abra su terminal o símbolo del sistema y navegue hasta la ubicación que contiene el dist directorio. Luego use el siguiente comando para ejecutar el script:
python dist/main.py
Reemplazar principal.py con el nombre de su guión. El script debe ejecutarse como lo haría sin ofuscación. Pruébelo a fondo para asegurarse de que todas las funciones funcionan como espera.
Protección de paquetes completos de Python
Los paquetes pueden contener unos pocos módulos o cientos de módulos dependiendo de su propósito. Proteger cada módulo por separado puede ser tedioso. Afortunadamente, Pyarmor tiene la capacidad de asegurar un paquete completo sin que tengas que especificar cada módulo por separado.
Suponga que tiene un paquete de Python simple llamado paquete_de_muestra con la siguiente estructura:
sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py
Puede crea tantos módulos como quieras.
Para cifrar y ofuscar el paquete, abra la terminal o el símbolo del sistema y navegue hasta el directorio en el que reside su paquete. Luego ejecute el siguiente comando:
pyarmor gen -O dist -r -i sample_package
Reemplazar paquete_de_muestra con el nombre de su paquete. Este comando encriptará y ofuscará el directorio de su paquete y guardará la salida protegida en el dist directorio. Utilice el paquete protegido como lo haría con cualquier otro paquete de Python.
Por ejemplo. Para usar el paquete de muestra anterior, cree un nuevo script dentro del dist directorio:
from my_package import module1, module2
module1.say_hello()
module2.do_something()
Cuando ejecuta el código, el paquete debería funcionar como lo haría antes de asegurarlo.
Controlar el acceso a su script
Es posible que desee limitar el tiempo que un usuario ejecuta su secuencia de comandos. Por ejemplo, durante el período de prueba.
Para limitar la cantidad de tiempo que se ejecuta la secuencia de comandos, use el siguiente comando al ofuscar su secuencia de comandos.
pyarmor gen -O dist -e 30 main.py
Reemplazar 30 con la cantidad de días que desea que el script esté activo. También puede reemplazarlo con una fecha exacta. Una vez transcurridos los días, el script caducará.
Puede probar esta funcionalidad configurando una fecha pasada. Esto debería hacer que ejecutar el script arroje un error. Utilice el siguiente comando para ofuscar el script con una fecha de caducidad:
pyarmor gen -O dist -e 2022-01-01 main.py
Luego ejecute el script seguro.
El error muestra que la clave de licencia ha caducado, por lo que el script no puede ejecutarse.
Equilibrio entre seguridad y eficiencia
Si bien Pyarmor ofrece sólidos mecanismos de ofuscación para mejorar la seguridad de su código, es importante mantener el equilibrio entre las medidas de seguridad y el mantenimiento de la eficiencia y el rendimiento de su software. Puedes lograr esto al:
- Evaluación de la necesidad de ofuscación: si su software involucra algoritmos patentados, datos confidenciales o lógica comercial única, la ofuscación es muy beneficiosa. Sin embargo, para los scripts de código abierto con preocupaciones mínimas de propiedad intelectual, la compensación entre seguridad y rendimiento se inclina más hacia la eficiencia.
- Evaluación del impacto en el rendimiento: La ofuscación introduce una sobrecarga de tiempo de ejecución adicional debido a las operaciones y transformaciones adicionales aplicadas al código. Este impacto es insignificante para guiones pequeños, pero se vuelve más notorio para proyectos más grandes. Debe evaluar cuidadosamente las implicaciones de rendimiento de la ofuscación y realizar pruebas para asegurarse de que su software siga siendo receptivo y eficiente.
- Realización de actualizaciones periódicas y mantenimiento.: actualice regularmente su código ofuscado, licencias y mecanismos de seguridad para adelantarse a posibles vulnerabilidades. Equilibre esto con la necesidad de minimizar las interrupciones para sus usuarios.
¿Puede alguien descifrar el código ofuscado?
El craqueo de software se refiere al acto de eliminar la protección de copia o los mecanismos de licencia de una aplicación de software. Para obtener acceso no autorizado a su funcionalidad completa sin pagar por ello. Es importante tener en cuenta que ofuscar su software no lo protege completamente de los crackers.
Con suficiente determinación y recursos, el código ofuscado se puede descifrar. Esta es la razón por la que debe intentar realizar actualizaciones y mantenimiento regulares para corregir cualquier laguna sospechosa.