Problema: Pyarmor + Pyinstaller (empacotamento e transformação em .exe)

360 views
Skip to first unread message

Matheus Santos

unread,
Apr 4, 2021, 11:48:13 PM4/4/21
to Python Brasil
Olá pessoal, alguém pode me ajudar?

Estou enfrentando um problema, tenho uma aplicação python, que irei fornecer a um usuário final(ela tem interface, e um sistema simples para que eu possa enviar atualizações). Entretanto preciso ter uma mínima segurança possível para que não consigam abrir o source code com facilidade, mesmo que não seja 100% eficaz. Por isso estou utilizando o pyarmor como ferramenta, visto que até então não encontrei conteúdo que instigasse algum curioso aleatório vendo vídeo de Youtube que quebrasse a sua criptografia de forma fácil. 

Só que tenho um impasse: eu quero gerar um executável com o código criptografado, mas não encontrei a forma de empacotar esses arquivos incluindo as pastas.

Segue um exemplo genérico da estrutura inicial da pasta antes do empacotamento com Pyarmor:

./folder\arquivo_principal.py
./folder\atualizador_arquivo_principal.py
./folder\Pasta_arquivosPrivados\
./folder\Pasta_arquivosPrivados\arquivo.db
./folder\Pasta_Driver\
./folder\Pasta_Driver\chromedriver.exe
./folder\Pasta_Driver\msedge.exe
./folder\Pasta_Driver\geckodriver.exe
./folder\Pasta_Interface\
./folder\Pasta_Interface\tela01.ui
./folder\Pasta_Interface\tela02.ui 
./folder\Pasta_arquivosPublicos\
./folder\Pasta_arquivosPublicos\arquivo_pro_usuário.txt
./folder\Pasta_arquivosPublicos\informs\.tempdata

Legenda das cores:
  1. Texto em vermelho: Arquivos principais para transformar em .exe
  2. Texto marcado em amarelo: Pastas a serem empacotadas com os arquivos principais.
  3. Texto em  verde: Subpastas do diretório que ficarão de fora do empacotamento, mas fazem parte da aplicação, elas são destinadas para interação do usuário e também uma determinada função da aplicação.
  4. Texto em cinza: arquivos dentro das subpastas

O que eu preciso neste caso é obter a seguinte estrutura final:
./folder\arquivo_principal.exe
./folder\atualizador_arquivo_principal.exe
./folder\Pasta_arquivosPublicos/
./folder\Pasta_arquivosParaUsuarioInteragir\arquivo_pro_usuário.txt
./folder\Pasta_arquivosParaUsuarioInteragir/informs/.tempdata

Ou seja, eu teria um executável para executar a aplicação, outro executável responsável para atualizar os arquivos da aplicação(ele apagaria o arquivo_principal.exe   e faria a substituição por um novo arquivo_principal.exe com o source code mais recente. E também a pasta contendo os arquivos que são "públicos".

O que eu tentei fazer que não consegui encontrar a resposta?
Tentei rodar o comando: pyarmor pack -e " --onefile" main.py   
Porém não funcionou para mim, pois ele só empacota o arquivo principal, e ao executá-lo ele dá erro por não encontrar os arquivos das pastas que compõem o programa. 

Tentei ler a documentação, disponível em: https://pyarmor.readthedocs.io/en/v5.1.0/pack-obfuscated-scripts.html
Mas não consegui compreender as abstrações.

Se alguém souber como ajudar,  agradeço bastante.

Desde já, obrigado á todos.


Matheus Santos

unread,
Apr 4, 2021, 11:52:45 PM4/4/21
to Python Brasil
Só uma correção as últimas duas linhas em "O que eu preciso neste caso é obter a seguinte estrutura final:"
Na verdade são:
./folder\Pasta_arquivosPublicos\arquivo_pro_usuário.txt
./folder\Pasta_arquivosPublicos/informs/.tempdata

Matheus Canavez

unread,
Mar 30, 2022, 7:05:51 PM3/30/22
to Python Brasil
Fala meu chara, consegue me passar seu contato?

Sou iniciante em python, fiz uma aplicação e tbm usei o pyarmor para gerar o exe e sem sucesso! Se puder me passar seu e-mail para gente para entrar em contato! Aí trocamos umas figurinhas!

Obrigadooo!

Reply all
Reply to author
Forward
0 new messages