Verschleierung von Python-Code

Fariba Laiq 10 Oktober 2023
  1. Verwendung der Base64-Kodierung zur Verschleierung von Python-Code
  2. Python-Code mit PyArmor verschlüsseln
Verschleierung von Python-Code

Code-Verschleierung bedeutet, den Code zu verschlüsseln oder in ein für Menschen schwer verständliches Format umzuwandeln. Wir erledigen diese Aufgabe bewusst, um das Reverse Engineering eines Angreifers zu vermeiden und geistiges Eigentum und Geschäftsgeheimnisse zu schützen.

Python bietet mehrere Möglichkeiten, Code zu verschleiern.

Verwendung der Base64-Kodierung zur Verschleierung von Python-Code

base64 ist ein Modul in Python, das Daten codiert und decodiert, sobald die Daten in Byte-ähnliche Objekte umgewandelt wurden. Das Codieren des Python-Codes kann ein hilfreicher Trick sein, um den Code zu verschleiern, damit er aus Sicherheitsgründen nicht von Menschen gelesen und verstanden werden kann.

Im folgenden Code haben wir das base64-Modul importiert und die Anweisung print('Delftstack') mit der Methode b64encode() kodiert. Wir müssen den String im UTF-8-Format an die Methode übergeben.

Wir können den Code auch mit der Methode b64.decode() entschlüsseln, indem wir den verschlüsselten Text an diese Methode übergeben. Schließlich können wir den entschlüsselten Code mit den Methoden eval() und compile() ausführen.

Beispielcode:

# 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"))

Ausgabe:

#Python 3.x
Code: print('Delftstack')
Obfuscated code: b'cHJpbnQoJ0RlbGZ0c3RhY2snKQ=='
Decrypted Code:
Delftstack

Wir können auch eine vollständige .py-Datei importieren, die den Code enthält, und sie mit der base64-Technik wie folgt codieren. Die Datei My_Script.py enthält den 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)

Ausgabe:

#Python 3.x
Encrypted Code: b'cHJpbnQoJ2hlbGxvIHdvcmxkJyk='

Python-Code mit PyArmor verschlüsseln

Auch Python-Programme lassen sich mit PyArmor verschlüsseln. Es ist ein Befehlszeilentool, das Code verschleiert, verschleierte Skripte an feste Maschinen bindet und verschleierte Skripte sogar verfallen lassen kann.

Um PyArmor zu verwenden, sollten wir es zuerst mit dem folgenden Befehl installieren.

#Python 3.x
pip install pyarmor

Hier werden wir den folgenden Code in einer Datei namens MyScript.py verschleiern. Wir müssen die .py-Datei in einem separaten Ordner ablegen.

# Python 3.x
print("Hello World")

Der Befehl pyarmor obfuscate MyFolder/MyScript.py verschleiert die obige .py-Datei. Wir können die Ausgabedatei im Ordner dist mit demselben Dateinamen sehen.

Ausgabe:

#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)
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