Verschleierung von Python-Code
- Verwendung der Base64-Kodierung zur Verschleierung von Python-Code
-
Python-Code mit
PyArmor
verschlüsseln
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)
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