wie mache ich ein Lizenz System für Python?

Hanibal545  22.07.2022, 21:55

Wie professionell soll es sein?

pazsky 
Fragesteller
 22.07.2022, 22:03

Ganz normales Lizenz system. Muss nicht richtig gut sein, hauptsache schutz vor Hacking

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du brauchst eine externe Quelle (einen öffentlich erreichbaren Server), bei der sich das Programm meldet, um geprüft zu werden.

Ein erstes Konzept könnte folgendermaßen aussehen:

Bei Installation generiert der Server eine ID für die Anwendung, die künftig als Kriterium bei der Prüfung verwendet wird. Diese ID sollte aus mehreren Teilen bestehen (und daher am besten via Hash-Algorithmus gebildet werden):

  • Einer reinen Lizenz-ID, die der Server aus einem Pool verfügbarer Lizenz-IDs herausgreift. Sowohl Client, als auch Server merken sich diese ID.
  • Einer Applikations-ID. Das könnte z.B. die MAC-Adresse des Endgeräts sein, Lizenz-Informationen zum OS oder ein zufallsgenerierter Key (der sicher und möglichst schwer auffindbar gespeichert werden müsste).
  • Dem Installationsdatum, welches als Salt dienen könnte. Diese Information sollte also auch noch einmal (und nur vom Server) separat gespeichert werden.

Würdest du nur die Lizenz-ID prüfen und irgendein Nutzer würde diese ID veröffentlichen, käme jeder schnell und einfach an eine Lizenz.

Wenn die Anwendung geöffnet wird (oder zu anderen Zeitpunkten, das musst du selbst beurteilen), müsste sie die einzelnen Daten (Lizenz-ID, Applikations-ID) via Netzwerkverbindung an den Server schicken. Dieser generiert aus diesen Teilen (sowie dem Salt) einen Hash und vergleicht ihn mit der ID, die bei der Installation von ihm gespeichert wurde.

Hinsichtlich der Umsetzung könntest du dich für den Prüfserver nach Webhostern umschauen, auf denen du eine Python-Webanwendung (flask mit Gunicorn, o.ä.) einrichten kannst. Oder du nutzt einen der zig Webhosting-Anbieter, welche dir einen Apache HTTP Server bieten und schreibst die Logik mit PHP oder Perl (die sind in der Regel schon vorkonfiguriert). Für die Datenspeicherung wäre eine MySQL- oder PostgreSQL-Datenbank ausreichend.

Die Anfragen von Seiten der Clientanwendung kannst du mit der requests-Bibliothek abschicken.

Der Code der Clientanwendung sollte des Weiteren nicht so einfach einsehbar sein. Packe die Ressourcen in einer Executable zusammen (siehe py2exe o.ä.). Schau nach Obfuscating-Tools.

Das dir dieser Weg trotzdem noch keine Sicherheit davor bietet, dass jemand einen Weg drumherum findet, sollte klar sein. Wenn jemand bspw. die Serveradresse und das Response-Format kennt, kann man die Anfragen auf eine lokale Anwendung umleiten, die jedesmal die Validität bestätigt.

Übrigens gibt es auch Dienstleister wie Cryptolens, keygen oder licensespring, die einen Lizenzschutz bieten. Weitere Alternativen zu finden, sollte nicht schwer sein.

pazsky 
Fragesteller
 23.07.2022, 21:17

Vielen Dank das sie sich Mühe gemacht haben um das zu schreiben. Ich werde mich natürlich ran setzen! Danke :)

0

Ich würde einen Lizenzserver in PHP programmieren. Dort können die Leute auf deiner Seite eine Lizenz buchen und bekommen den Lizenzschlüssel den sie in deiner Anwendung z.B. uber eine Textdatei einfügen die von deiner Phyton-Anwendung ausgelesen werden kann.

Deine Phyton-Anwendung sendet dann eine Anfrage an den Lizenzserver ob die Lizenz gültig ist.

pazsky 
Fragesteller
 22.07.2022, 21:06

Genau das suche ich, hast du ein youtube tutorial oder eine Website die mir helfen könnte?

Danke:)

0
stealthuser  22.07.2022, 21:31
@pazsky

Nein ein Tutorial habe leider ich nicht - bin auch in Bezug auf Algorithmen besser als im eigentlichen Programmieren, also werde ich dir abgesehen von Ideen zur Umsetzung nicht viel weiter helfen können.

Aber es soll wohl die Möglichkeit geben aus Phyton heraus auf das Internet zu zu greifen und man kann Phyton in eine EXE umwandeln.

Ich würde nach einer Möglichkeit suchen wie man mit Phyton eine Text-Datei im selben Verzeichnis auslesen kann.

Den Lizenzschlüssel übergibst Du dann an eine URL - ich habe aber keine Ahnung wie man die Rückgabe auswertet.

1
katzimausi123  08.06.2023, 11:02

warum unbedingt in PHP? Wegen der SQL-Anbindung?

0

mach dir eine SQL mit gehashten Werten=Lizenzcodes und die lässt du per Input abgleichen.