Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Key-Prüfung im Programm installieren (https://www.delphipraxis.net/70076-key-pruefung-im-programm-installieren.html)

Fritz01 24. Mai 2006 16:47


Key-Prüfung im Programm installieren
 
Hallo,
zum Thema KeyGenerator wurde ja schon viel geschrieben.

Beim Test funktioniert so

if EdtBenKey.Text = MD5Print(MD5.MD5String(EdtBenName.Text)) then begin
{ mach was, wenn die Nummer richtig ist }
showMessage ('Key ist OK');
end
else
showMessage ('Key nicht OK');
{ mach nichts, wenn die Nummer falsch ist }

Frage : Wie sage das in meinem Programm? Welche Art von Key-Überprüfung, wie wird es im Programm eingebunden?
Habe da was von DLL gelesen, aber wie??? Wer hat das schon hinter sich und kann da helfen?
Fritz01

Klaus01 24. Mai 2006 16:54

Re: Key-Prüfung im Programm installieren
 
So ganz verstehe ich Deine Frage nicht!
Du hast es doch schon am laufen, oder sehe ich das falsch.

Grüße
Klaus

Fritz01 24. Mai 2006 18:44

Re: Key-Prüfung im Programm installieren
 
Hallo Klaus01,
ja der Generator läuft. Es wird ein Key erzeugt und kann, wie oben beschrieben gestestet werden.
Jetzt möchte ich gerne erreichen, daß ein Programm mit diesem Key und dem entsprechenden Benutzernamen aktiviert werden kann. Eingabe, Vergleich, Programm freischalten (oder auch nicht)
Key und BenName sollte nur einmalig, beim 1. Programmstart erforderlich sein.
Wie geht das?
Fritz

DGL-luke 24. Mai 2006 18:48

Re: Key-Prüfung im Programm installieren
 
Naja, benutzt dein KeyGen einen Algo? Dann musst du nur prüfen, ob die Seriennummer mit dem algo übereinstimmt, also z.B. eine bestimmte Quersumme hat oder so.

Fritz01 24. Mai 2006 19:10

Re: Key-Prüfung im Programm installieren
 
Algo, Verschlüsselung mit MD5 von Fichtner.

Benutzername eingeben, key wird erzeugt, kann wie folgt getestet werden.

procedure TMainForm.ButtonTestClick(Sender: TObject);
begin
if EdtBenKey.Text = MD5Print(MD5.MD5String(EdtBenName.Text)) then begin
{ Key OK }
showMessage ('Key ist OK');
end
else
showMessage ('Key nicht akzeptiert');
{ Key passt nicht }
end;

habe ich scho oben dargestellt und das funktioniert.

Nun habe ich ein Programm, welches nur nach Eingabe von Benutzername und dem von mir erzeugtem Key (aus diesem BenNamen) freigeschaltet werden soll.

himitsu 26. Mai 2006 13:08

Re: Key-Prüfung im Programm installieren
 
Na das ist doch schon der fertige Code (wurde dir aber auch schon gesagt) ... du mußt einfach nur diesen Code in dein Programm einbauen.

Also einfach ein Eingabeformular in dein Programm (mit den 2 Edit und den OK/-Abbrechen-Buttons).
Der wichtige Teil ist ja nur das:
Delphi-Quellcode:
if EdtBenKey.Text = MD5Print(MD5.MD5String(EdtBenName.Text)) then begin
  // hier was machen, wenn passwort OK
end else begin
  // und hier das, was gemacht werden soll, wenn der Code falsch ist
end;
Und was du machen willst, wenn der Key falsch ist, bleibt ja dir überlassen ... Programm beenden, zur Neueingabe auffordern...

PS: dieser Code ist recht "gut", denn jeder kann sich einen einfachen KeyGenerator zu deinem Programm erstellen. also einfach nur ein EditFeld, wo man irgendwas eingibt (was dann halt später bei Benutzername eingetragen werden soll) und kann sich dann mit der selben Funktion inen eigenen Key erstellen.

Delphi-Quellcode:
neuerKey := MD5Print(MD5.MD5String('irgendwas'));

Fritz01 26. Mai 2006 14:09

Re: Key-Prüfung im Programm installieren
 
Hallo himitsu,
na, ganz so einfach ist es doch nicht, hab es probiert!
Da kommen die Fehlermeldungen wie MD5Print, MD5, MD5String usw unbekannte Bezeichner! Habe den ges. Generator mit ins Progr. gebaut, damit waren die Fehlermeldungen weg.
Vielleicht geht das auch einfacher, hierzu wäre ich um einen Tipp dankbar.
Nach außen ist das aber nicht zu erkennen!! Es ist halt ein Eingabeformular, welches per Mail zu mir kommt und dann von mir mit dem Schlüssel zurückgeschickt wird.
Frage dazu: Wie sieht es rechtlich aus, wenn ich die MD5.pas mit dem Programm weggebe? Auch wenn es nur Teile daraus sind.
...denn jeder kann sich einen einfachen KeyGenerator zu deinem Programm erstellen.
Mit der nötigen Energie ist alles zu knacken!
Es soll auch nur dem normalen User die unkontrllierte Weitergabe erschweren.
Fritz

himitsu 26. Mai 2006 14:16

Re: Key-Prüfung im Programm installieren
 
Diese Functionen/Prozeduren sind ja in einer MD5-Lib enthalten und diese mußt du natürlich mit in dein Programm einbinden (also die entsprechenden Units).

Und da dem MD5 ein fest definiertes Verfahren hinterliegt, welches immer gleich ist, kann man also mit jeder x-beliebigen Lib, welche MD5 kann, einen entsprechenden Key erstellen.
Einzig MD5Print und .MD5String können je nach Lib anders ausfallen, aber das ist egal, da man ja am Ergebnis sieht, was die machen :roll:

Klaus01 26. Mai 2006 14:23

Re: Key-Prüfung im Programm installieren
 
@Fritz,

du kannst ja den Benutzername noch mit einem oder mehreren Strings (den/die nur Du bzw. Dein Programm kennt) verknüpfen
(anhängen, XOR oder sonstwas) und daraus den Hashwert bilden.
Das ist dann zwar kein recht stabiler Schutz, aber immerhin einer.

Denn himitsu hat recht, wenn nur aus dem Benutzernamen der hash gebildet wird
ist es ganz leicht Deinen Schutz des Programms auszuhebeln.

Grüße
Klaus

Olli 26. Mai 2006 15:58

Re: Key-Prüfung im Programm installieren
 
Hi Fritz01,

der Hash-Algorithmus selber sollte eigentlich in einem solchen Fall kreativer ausfallen als MD5 zu nehmen. Über was der Hash gebildet wird ist im Endeffekt egal (auch wenn's nur der Benutzername ist). Hier wäre mal die Hausmannskost der Hashalgos angesagt. Schau dir mehrere solcher Algos an und bastele dir einen eigenen :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz