web-dev-qa-db-fra.com

Obfuscation de code Python

Connaissez-vous un outil qui pourrait m'aider à dissimuler du code python?

36
vishal

Votre espace de problème est sous-spécifié. Est-ce pour une application en ligne de commande? Ce code est-il censé être utilisé comme une bibliothèque?

En plus des deux autres réponses, vous pouvez incorporer le code dans un fichier binaire. Quand il commence, décodez le code et évaluez la chaîne. Cela fonctionne également pour une extension de bibliothèque partagée. Je pense que vous pourriez également le faire avec du code octet, mais cela ne serait pas aussi simple que d'appeler Py_EvalCode.

py2exe ou freeze sont une autre solution permettant de convertir le code en un exécutable. Cela inclut simplement le code dans le binaire, et ne fait aucune sorte d'obsolescence sérieuse, mais c'est toujours plus difficile que d'ouvrir un fichier .py.

Vous pouvez écrire le code en Cython, qui est similaire à Python et écrit les fichiers d’extension Python en C, à utiliser en tant que .so. C’est peut-être le cas le plus difficile de l’ingénierie inverse et de vous fournir un langage de haut niveau pour le développement.

Ils sont tous piratables, de même que toutes les solutions. A quel point tu veux que ce soit?

15
Andrew Dalke
12
Nick Fortescue

En fait, j'ai trouvé un très beau projet qui convertit un Python en C++ et crée un fichier binaire, lié statiquement.

Découvrez ceci: http://www.nuitka.net/

6
Adir Iakya

Dans de nombreuses situations, vous pouvez expédier des fichiers .pyc compilés par octets au lieu des fichiers sources .py. Cela vous donne un certain degré de brouillage. Comme le suggère le pyobfuscate README, cela a des limites. Mais vous pourrez peut-être combiner les deux approches. 

5
Greg Ball

La bibliothèque standard de Python inclut compileall.py . Vous pouvez l'exécuter sur un répertoire et cela générera des fichiers .pyc pour tous vos fichiers source. Les fichiers .pyc n'incluront que du bytecode et des docstrings, et élimineront tous les commentaires. Vous pouvez ensuite copier ce répertoire, puis exécuter une opération telle que rm -rf $(find . -name .py) pour supprimer les fichiers source originaux.

4
Cerin

Votre meilleur pari est de le compiler avec Shed Skin , un compilateur expérimental Python-C++.

2
user7305

Bien que cela ne fasse pas de brouillage, cette recette Python fonctionne très bien pour réduire la taille du code Python, y compris pour supprimer les commentaires.

0
Isaac