Obfusquer le code Python

Fariba Laiq 10 octobre 2023
  1. Utiliser l’encodage Base64 pour obscurcir le code Python
  2. Utilisez PyArmor pour obscurcir le code Python
Obfusquer 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)
Auteur: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

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