Wie kann ich meinen Code mit Hilfe einer Bibliothek schützen?
Nehmen wir einfach mal diesen Beispiel code:
def is_prime(num):
"""Prüft, ob eine Zahl eine Primzahl ist."""
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
# Zahl zum Testen
test_number = 29
# Ergebnis ausgeben
if is_prime(test_number):
print(f"{test_number} ist eine Primzahl.")
else:
print(f"{test_number} ist keine Primzahl.")
Angenommen, ich möchte diesen Teil gerne in einer Bibliothek auslagern, sodass der Code von einer Person mit einem komplett anderen Rechner und in einem anderen Netzwerk genutzt werden kann, ohne dass sie sieht, wie dieses Stück Code aussieht:
def is_prime(num):
"""Prüft, ob eine Zahl eine Primzahl ist."""
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
Wie sollte ich an die Sache herangehen um das möglichst einfach zu realisieren?
3 Antworten
Ich nehme auch mal deinen Kommentar der vorherigen Frage dazu:
Ich möchte vor allem nicht, dass der bestimmte Code für die Personen, die ihn verwenden offen sichtbar ist und somit rekonstruierbar ist.
—
Auch code in einer Bibliothek ist offen einsehbar, wenn die Nutzer in diese hineinschauen.
Was möglich ist, ist den Code in Maschinensprache übersetzen zu lassen, sodass zumindest nicht der menschenlesbare Code verteilt wird. Auch gibt es Verfahren, welche "Obfuskation" durchführen, um Code weiter zu schützen: https://de.wikipedia.org/wiki/Obfuskation_(Software).
Jedoch kann jede Software, die auf den Rechnern der User läuft, analysiert, dekompiliert und verändert werden. Echte Sicherheit bringt nur, den Code auf den eigenen Rechnern zu halten und nur Schnittstellen zur Verfügung zu stellen.
Das ist in den allermeisten Fällen aber nicht den Aufwand wert.
Eine andere Option ist der Rechtsweg. Das ist vor allem bei kommerzieller Software üblich. Denn diese ist dein geistiges Eigentum (ggf. gelten auch Patent oder andere Rechte) und darf nicht anders genutzt werden, als du es erlaubst.
Joa, dann ab mit dir in eine kompilierte Sprache :)
Python wird nicht kompiliert, sondern interpretiert. Somit ist der Quellcode immer lesbar. Du könntest eine .exe-Datei generieren lassen - dies geht über py2exe oder PyInstaller.
Theoretisch ja.
.pyd
ist Aber platformspezifisch (Windows) und kann theoretisch auch reverse engineerit werden.
Und ist nicht einfach zu erstellen. Bessere Lösung ist definitiv ne Lizenz.