Estou criando um programa interpretado bastante complexo em Python. Estou trabalhando na maior parte desse código para outros fins há alguns meses e, portanto, não quero que meu cliente simplesmente copie e tente vendê-lo, pois acho que vale uma quantia justa.
O problema é que preciso que o script seja executado em um servidor pelo qual meu cliente está pagando. Existe alguma maneira de proteger uma pasta específica na máquina contra o acesso root ou torná-la para que apenas um uso específico possa acessar o diretório ? O sistema operacional é o Ubuntu.
python
code-security
Mike Partridge
fonte
fonte
root
tem permissão para fazer tudo .Respostas:
Licencie-o.
Sério, isso é tudo!
fonte
Você sempre pode compilar todos os seus arquivos para o byte code pyc. Existem decompiladores por aí que podem gerar código-fonte a partir dele, mas nada sério.
No entanto, isso apenas resolverá a capacidade de ler o código do seu programa. Proteger a única maneira é licenciá-lo como o Nightcracker disse, porque, mesmo que você tenha compilado seu código, digamos código de máquina, se seu trabalho não estiver protegido por uma licença, ele ainda poderá ser comercializado contra sua vontade.
Resumindo, compile para código de bytes e, mais importante, Licencie-o
fonte
Use Cython. Isso permitirá que você compile seu programa como um executável nativo. Então deve ser muito mais difícil roubar.
Quanto ao diretório, o único conselho que posso dar é se você tem suas permissões configuradas corretamente. As ACLs podem ser suas amigas, embora eu não tenha 100% de certeza de que elas podem impedir que o root acesse um arquivo. Mesmo que pudessem, o root ainda poderia alterar a permissão. Ele é raiz, ele é deus - é assim que essas coisas funcionam.
http://www.korokithakis.net/node/109
fonte
Como o usuário acima mostrou, os desmontadores podem recuperar o código, mas ainda não é muito legível (pelo menos não para os desmontadores de código aberto).
Eu estava pensando sobre isso, e uma maneira de pensar que você poderia resolver esse problema (se você chamar um problema de código aberto forçado) é escrever um script de recriação automática. Isso seria bastante simples, na verdade. Você apenas alimentaria o script em seu módulo e ele renomearia todas as variáveis específicas do módulo. Isso, além de liberar apenas o arquivo compilado, faria muito para ofuscar seu código.
Fazendo uma pesquisa no PyPI, encontrei o seguinte: http://pypi.python.org/pypi/pyfuscate/0.1 . Você deve verificá-lo e outros gostarem e informar de volta: D
Além disso: você também deve licenciá-lo, é claro.
fonte
Eu também sugeriria o licenciamento. Além do licenciamento, vamos criptografar o código-fonte das rotinas principais usando o algoritmo de chave assimétrica, para que somente a máquina do seu cliente possa executá-lo. Uma das chaves do par é algo obtido no hardware (exemplo: número de série da placa de rede) da máquina do seu cliente. Use a outra chave do par para descriptografar o código fonte ao executar o programa. Observe que a única entrega em texto simples seria a rotina de descriptografia e o restante seria em texto cifrado.
Dessa forma, seu cliente pode copiar e colar seu código aparentemente sem sentido, mas não pode executá-lo em outro lugar. Minha sugestão não é completamente à prova de balas: o intérprete pode armazenar o programa descriptografado em algum lugar da memória. Então é possível que algum hacker recupere seu programa em texto sem formatação durante a execução, eu acho.
Quanto à prevenção de pastas de acesso root, concordo que a raiz não pode ser impedida de acessar nenhum arquivo / pasta.
fonte
ruby
/python
/node
com um programa personalizado espelha a API de execução e gera o código.O licenciamento é a melhor resposta aqui. Dito isto, por que ele tem que funcionar com seus equipamentos? Se é tão importante, você pode querer um serviço e criar algum tipo de API de serviço em torno das coisas, para que as pessoas nem consigam ver sua propriedade intelectual para roubá-la.
fonte