Obfusquer le code Python
- Utiliser l’encodage Base64 pour obscurcir le code Python
-
Utilisez
PyArmor
pour obscurcir le code Python
L’obscurcissement du code signifie crypter ou convertir le code dans un format difficile à comprendre par les humains. Nous effectuons cette tâche en connaissance de cause pour éviter l’ingénierie inverse d’un attaquant et protéger la propriété intellectuelle et les secrets commerciaux.
Python offre plusieurs façons d’obscurcir le code.
Utiliser l’encodage Base64 pour obscurcir le code Python
Le base64 est un module en Python qui encode et décode les données une fois que les données sont transformées en objets de type octet. L’encodage du code Python peut être une astuce utile pour obscurcir le code afin d’empêcher qu’il ne soit lu et compris par les humains pour des raisons de sécurité.
Dans le code suivant, nous avons importé le module base64 et encodé l’instruction print('Delftstack')
à l’aide de la méthode b64encode()
. Nous devons passer la chaîne au format UTF-8 à la méthode.
On peut aussi déchiffrer le code en utilisant la méthode b64.decode()
en passant le texte encodé à cette méthode. Enfin, nous pouvons exécuter le code décrypté en utilisant les méthodes eval()
et compile()
.
Exemple de code :
# Python 3.x
import base64
code = "print('Delftstack')"
print("Code:", code)
encrypted_code = base64.b64encode(code.encode("utf-8"))
print("Obfuscated code:", encrypted_code)
mydecode = base64.b64decode(encrypted_code)
print("Decrypted Code:")
eval(compile(mydecode, "<string>", "exec"))
Production:
#Python 3.x
Code: print('Delftstack')
Obfuscated code: b'cHJpbnQoJ0RlbGZ0c3RhY2snKQ=='
Decrypted Code:
Delftstack
On peut aussi importer un fichier .py
complet contenant le code et l’encoder en utilisant la technique base64 de la manière suivante. Le fichier My_Script.py
contient le code print('hello world')
.
# Python 3.x
import base64
file = open("My_Script.py")
encrypted_code = base64.b64encode(file.read().encode("utf-8"))
print("Encrypted Code:", encrypted_code)
Production:
#Python 3.x
Encrypted Code: b'cHJpbnQoJ2hlbGxvIHdvcmxkJyk='
Utilisez PyArmor
pour obscurcir le code Python
Les programmes Python peuvent également être chiffrés avec PyArmor
. Il s’agit d’un outil de ligne de commande qui obscurcit le code, lie les scripts obscurcis aux machines fixes et peut même faire expirer les scripts obscurcis.
Pour utiliser PyArmor
, nous devons d’abord l’installer à l’aide de la commande suivante.
#Python 3.x
pip install pyarmor
Ici, nous allons obscurcir le code suivant dans un fichier nommé MyScript.py
. Nous devons mettre le fichier .py
dans un dossier séparé.
# Python 3.x
print("Hello World")
La commande pyarmor obfuscate MyFolder/MyScript.py
obscurcira le fichier .py
ci-dessus. Nous pouvons voir le fichier de sortie dans le dossier dist
avec le même nom de fichier.
Production:
#Python 3.x
from pytransform import pyarmor_runtime
pyarmor_runtime()
__pyarmor__(__name__, __file__, b'\x50\x59\x41\x52\x4d\x4f\x52\x00\x00\x03\x06\x00\x33\x0d\x0d\x0a\x09\x30\xe0\x02\x00\x00\x00\x00\x01\x00\x00\x00\x40\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x18\x58\xc1\xa9\xb3\xd3\xa5\x4a\x59\xc7\xef\x90\xbd\x03\x26\xa0\x44\x00\x00\x00\x00\x00\x00\x00\x00\x75\x29\x30\x1b\x83\xa8\x1a\x8c\x19\x5d\xf5\xfb\x82\xd2\xde\xf9\x3e\x55\x2a\x65\x05\x6c\xd5\x40\xf1\x45\xaf\x5a\x5e\xce\x5b\x94\xe6\xb5\x2d\xbf\x91\x08\x47\x5a\x41\x2a\x8e\x86\x28\x08\x76\x35\x77\xbf\x3f\x52\x28\x03\xbb\xcf\xd4\xac\xa5\x1e\x8a\x4d\xfe\xc4\x48\x04\xb7\x8f\xfb\x10\xa7\x25\x05\x97\x80\xfa\x74\x96\x4b\x61\x88\x8f\x98\x96\x1e\xa5\x3d\x98\x2e\xe0\x1e\x19\xa2\x15\x94\x8b\xc2\x5c\x2a\x1e\x2c\x6f\x46\x28\x08\x85\x3f\x0d\x8a\xd8\xb5\x9c\xcc\xee\x8e\xff\x6f\x31\xb3\x02\x53\xbd\x88\x4a\x98\x84\x61\xd5\xe9\xea\x66\x75\x69\x1c\xd2\x5d\x47\x5e\x5b\xc8\x2d\x5f\x01\x74\xaa\xf6\x3b\xfc\xd0\x9f\xfd\x9c\x27\x35\x2b\xbe\x41\xa6\xc1\x88\x79\xfc\xb3\xe8\xa7\x65\x19\xed\x8d\x85\xb1\x07\x35\x96\x4d\xea\x32\x71\xba\x63\xb0\x11\xaf\x31\x05\xe9\xa0\xba\xaa\x77\x96\x43\xeb\x4d', 2)
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn