Je construis un programme interprété assez complexe en Python. Je travaille sur la plupart de ce code à d'autres fins depuis quelques mois, et je ne veux donc pas que mon client puisse simplement le copier et essayer de le vendre, car je pense qu'il vaut une bonne somme.
Le problème est que j'ai besoin que le script s'exécute sur un serveur pour lequel mon client paie, donc existe-t-il un moyen de sécuriser un dossier particulier sur la machine à partir de l'accès root, ou de faire en sorte qu'une seule utilisation particulière puisse accéder au répertoire ? Le système d'exploitation est Ubuntu.
python
code-security
Mike Partridge
la source
la source
root
autorisé à tout faire .Réponses:
Autorisez-le.
Vraiment, c'est tout!
la source
Vous pouvez toujours compiler tous vos fichiers en code octet pyc. Il existe des décompilateurs qui peuvent générer du code source mais rien de grave.
Cependant, cela résoudra simplement la possibilité de lire le code de votre programme. Pour protéger, le seul moyen est de le concéder sous licence, comme le dit Nightcracker, car même si vous avez compilé votre code, pour dire le code machine, si votre travail n'est pas protégé par une licence, il peut toujours être commercialisé contre votre volonté.
En résumé, compilez en code octet et, plus important encore, accordez-lui une licence
la source
Utilisez Cython. Cela vous permettra de compiler votre programme en tant qu'exécutable natif. Ensuite, il devrait être beaucoup plus difficile de voler.
En ce qui concerne le répertoire, le seul conseil que je puisse vous donner est de vous assurer que vos autorisations sont correctement configurées. Les ACL peuvent être votre ami, bien que je ne sois pas sûr à 100% qu'ils peuvent empêcher root d'accéder à un fichier. Même s'ils le pouvaient, root pourrait tout simplement modifier l'autorisation. Il est racine, il est dieu - c'est comme ça que ces choses fonctionnent.
http://www.korokithakis.net/node/109
la source
Comme l'a montré l'utilisateur ci-dessus, les désassembleurs peuvent récupérer le code, mais pour l'instant il n'est pas très lisible (du moins pas pour les désassembleurs open source).
J'y pensais, et une façon que je pense que vous pourriez résoudre ce problème (si vous appelez un code à ouverture forcée un problème) est d'écrire un script de refactorisation automatique. Ce serait assez simple en fait. Vous alimenteriez simplement le script de votre module, et il renommerait toutes les variables spécifiques au module. Cela, en plus de ne publier que le fichier compilé, ferait beaucoup pour brouiller votre code.
En faisant une recherche sur le PyPI, j'ai trouvé ceci: http://pypi.python.org/pypi/pyfuscate/0.1 . Vous devriez le vérifier et d'autres comme ça et faire rapport: D
Aussi: Vous devez également le concéder sous licence, bien sûr.
la source
Je suggère également l'octroi de licences. En plus des licences, chiffrons le code source des routines principales à l'aide d'un algorithme à clé asymétrique afin que seule la machine de votre client puisse l'exécuter. L'une des clés de la paire doit provenir du matériel (exemple: numéro de série de la carte réseau) de la machine de votre client. Utilisez l'autre clé de la paire pour déchiffrer le code source lors de l'exécution du programme. Notez que le seul livrable en texte brut serait la routine de décryptage et le reste serait en texte chiffré.
De cette façon, votre client peut copier-coller votre code apparemment charabia mais ne peut pas l'exécuter ailleurs. Ma suggestion n'est cependant pas complètement à l'épreuve des balles: l'interprète peut stocker le programme décrypté quelque part en mémoire. Ensuite, il est possible que certains pirates récupèrent votre programme en texte clair pendant l'exécution, je suppose.
Quant à empêcher les dossiers d'accéder à root, je conviens que root ne peut pas être empêché d'accéder à tous les fichiers / dossiers.
la source
ruby
/python
/node
avec un programme personnalisé qui reflète l'API d'exécution et génère le code.La licence est la meilleure réponse ici. Cela dit, pourquoi doit-il fonctionner avec leur équipement? S'il est si important, vous voudrez peut-être créer un service et créer une sorte d'API de service autour des choses afin que les gens ne puissent même pas voir votre propriété intellectuelle pour la voler.
la source