Contents

Proteja seus scripts Python contra engenharia reversa com Pyarmor

Python exibe um alto grau de legibilidade, o que contribui para sua ampla utilização em vários domínios. No entanto, esse mesmo atributo também apresenta certos desafios em termos de segurança. O potencial de invasão e exploração não autorizada por entidades concorrentes ou agentes malévolos não pode ser negligenciado. Tais ações podem resultar na reprodução de informações confidenciais e componentes proprietários, comprometendo assim a confiabilidade do software e a confiança nele depositada pelos usuários finais.

Aprimorar a proteção de seu software por meio da implementação de recursos avançados de segurança, incluindo ofuscação de código e validação de licenciamento, serve para reforçar suas defesas contra riscos potenciais. A preservação da confidencialidade de sua programação e a manutenção da confiança do usuário dentro do ecossistema digital são aspectos essenciais desse processo, que transcende meras considerações processuais.

Compreendendo Pyarmor

Pyarmor é uma biblioteca de linha de comando. Ele ajuda a proteger e ofuscar scripts e pacotes Python. Ele transforma o código Python original em uma forma mais difícil de entender, mantendo sua funcionalidade. O processo de ofuscação renomeia variáveis, funções e classes para nomes não descritivos. Ele também remove comentários e reestrutura o código. Isso dificulta a engenharia reversa, adulteração ou cópia do código.

O Pyarmor oferece proteção abrangente para várias formas de ativos baseados em Python, incluindo a proteção de arquivos de script individuais, bem como medidas de segurança em nível de pacote e incorporação de validação de licenciamento no próprio código.

Instalando a Biblioteca Pyarmor

O PyArmour, um pacote de software projetado para comunicação segura e operações criptográficas em Python, foi adicionado ao Python Package Index (PyPI), que serve como um repositório central de pacotes de software criados usando a popular linguagem de programação. Para instalar este pacote, pode-se utilizar a ferramenta Pip executando a seguinte instrução:

 pip install pyarmor

Você não é obrigado a colocar o Pyarmor na mesma pasta do seu projeto, pois ele pode ser instalado em qualquer local do seu dispositivo e fornecer proteção aos scripts Python localizados em qualquer diretório.

Para executar o script com segurança no contexto de um projeto sem exigir a instalação do Pyarmor no sistema de destino, o primeiro deve ser instalado na mesma pasta onde reside o projeto. A lógica por trás desse requisito reside no fato de que o código protegido contém componentes imperativos referentes especificamente ao ambiente de execução Pyarmor, indispensáveis ​​para executar o conteúdo nele contido.

Protegendo scripts Python individuais

A utilização do Pyarmor para proteger scripts individuais apresenta um processo direto, conforme evidenciado pela seguinte instância de um script que calcula a soma de dois valores numéricos.

 def add_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)

Por favor, utilize a interface do terminal para ir até o local onde o Pyarmor foi instalado. Posteriormente, execute a instrução subsequente para proteger e ocultar seu script substituindo ‘main.py’ pelo título de seu script específico.

 pyarmor gen --output dist main.py

Após a execução do comando fornecido, o Pyarmor gera um novo diretório denominado “dist”, que contém seu script protegido dentro de seus limites.

/pt/images/safeguarding-python-scripts-aganist-reverse-engineering-using-pyamor-dist-directory.jpg

Para obter acesso ao conteúdo de um script protegido, é necessário desbloquear ou desativar as medidas de segurança existentes. Esse processo pode ser chamado de “abertura” do script e pode envolver a inserção de uma senha ou a execução de alguma outra ação para conceder permissão para visualizar seu conteúdo.

/pt/images/safeguarding-python-scripts-aganist-reverse-engineering-using-pyamor-encrypted-script.jpg

A representação gráfica acima mencionada ilustra o resultado do processo de Pyarmor de codificação e ocultação da computação aritmética rudimentar. Consequentemente, a capacidade de discernir sua função é significativamente prejudicada com uma simples inspeção visual.

Para executar o script criptografado, acesse seu terminal ou prompt de comando e direcione sua navegação para a pasta que contém o diretório ‘dist’. Posteriormente, utilize o seguinte comando para iniciar o script:

 python dist/main.py 

Execute o código fornecido no lugar do arquivo main.py existente e certifique-se de que todas as funções funcionem corretamente após testes completos.

Protegendo Pacotes Python Inteiros

A Pyarmor oferece uma solução conveniente para proteger pacotes que podem consistir em vários módulos. Em vez de proteger individualmente cada módulo, o Pyarmor permite proteção abrangente de todo o pacote de uma só vez. Isso elimina a necessidade de processos manuais tediosos e demorados, tornando mais fácil para os desenvolvedores garantir a segurança de sua base de código.

Considere um cenário hipotético em que se possui um módulo Python rudimentar denominado “sample\_package”, que exibe a seguinte configuração organizacional:

 sample_package/
|-- __init__.py
|-- module1.py
|-- module2.py 

Você é livre para gerar um número ilimitado de módulos, caso seja necessário.

Para proteger e ocultar o pacote por meio de criptografia e obscurecimento, acesse o terminal ou a interface do prompt de comando e prossiga para o local onde seu pacote está armazenado. Posteriormente, execute a instrução subsequente da seguinte forma:

 pyarmor gen -O dist -r -i sample_package 

Utilize o seguinte processo para proteger seu diretório de pacotes, criptografando e ocultando seu conteúdo dentro da pasta “dist”. A versão protegida pode ser empregada como qualquer pacote regular do Python. Substitua “amostra\_pacote” no lugar do nome do seu pacote específico.

Para utilizar o pacote de amostra fornecido, crie um novo script na pasta “dist”:

 from my_package import module1, module2

module1.say_hello()
module2.do_something()

A execução do código não deve alterar sua funcionalidade quando executado em um estado seguro.

Controlando o acesso ao seu script

Uma abordagem possível a ser considerada ao projetar seu script Python é implementar um mecanismo para restringir a duração de sua execução, principalmente durante a fase de teste. Isso pode ser obtido incorporando um cronômetro ou contador que rastreia o tempo decorrido desde o início do script e o encerra quando o limite de tempo predeterminado é atingido. Ao fazer isso, você pode garantir que os usuários não possam usar o script continuamente além do período de teste especificado sem incorrer em cobranças ou penalidades adicionais.

Para regular a duração da operação do script, use as instruções mencionadas durante o processo de obscurecimento do script.

 pyarmor gen -O dist -e 30 main.py 

Modifique o texto fornecido da seguinte forma: “Ajuste a duração inserindo um número específico de dias ou uma data exata no campo’Dias’. Uma vez decorrido o prazo designado, o script será concluído automaticamente.

Para avaliar o recurso mencionado, você pode definir uma data anterior no calendário do sistema. Espera-se que esta ação acione uma exceção ao executar o script. Para obscurecer o script usando uma data inválida, utilize a seguinte diretiva:

 pyarmor gen -O dist -e 2022-01-01 main.py

Em seguida, execute o script protegido.

/pt/images/safeguarding-python-scripts-aganist-reverse-engineering-using-pyamor-error.jpg

A mensagem indica que as informações de licenciamento atingiram a data de expiração, o que impede a execução do script associado.

Equilibrando segurança e eficiência

Embora o Pyarmor forneça técnicas de ofuscação abrangentes projetadas para reforçar a proteção do seu código, é crucial encontrar um equilíbrio entre aprimorar os recursos de segurança e preservar a eficiência operacional e o desempenho do seu software. Isso pode ser alcançado por meio da implementação de estratégias eficazes que protegem contra possíveis ameaças e, ao mesmo tempo, otimizam o desempenho do sistema.

Em situações em que algoritmos proprietários, informações confidenciais ou princípios comerciais distintos estão em jogo, é imperativo considerar a ofuscação como uma medida crucial para proteger esses ativos. Por outro lado, ao lidar com aplicativos de código aberto que possuem relativamente menos implicações de propriedade intelectual, a decisão de priorizar a segurança em detrimento do desempenho torna-se cada vez mais relevante.

A implementação da ofuscação pode resultar em um aumento na sobrecarga de tempo de execução, que pode ser insignificante para scripts menores, mas se torna mais pronunciada conforme o tamanho do projeto aumenta. É crucial avaliar os efeitos potenciais no desempenho por meio de análises e testes completos para manter a eficiência e a capacidade de resposta do software.

Revisar e manter periodicamente o software é crucial para lidar com quaisquer vulnerabilidades emergentes ou componentes desatualizados. É importante encontrar um equilíbrio entre garantir que o sistema permaneça seguro e atualizado e, ao mesmo tempo, evitar interrupções desnecessárias para os usuários finais. Atualizando regularmente o código ofuscado, aplicando as práticas de licenciamento atuais e implementando medidas de segurança robustas, as organizações podem reduzir os riscos e garantir operações tranquilas.

Alguém pode quebrar o código ofuscado?

A pirataria de software, também conhecida como cracking de software, envolve contornar as medidas de segurança e as restrições de licenciamento impostas a um aplicativo para utilizar todos os seus recursos sem comprá-lo legalmente. Embora o emprego de técnicas como ofuscação de código possa atrapalhar os esforços dos piratas até certo ponto, não pode proteger totalmente contra o acesso não autorizado às funcionalidades do programa.

Por meio de dedicação inabalável e amplos meios, até mesmo códigos complexamente ocultos podem eventualmente ceder a esforços diligentes. Portanto, é imperativo que se implemente consistentemente atualizações contínuas e manutenção meticulosa para selar quaisquer vulnerabilidades potenciais que possam surgir.