Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Keygen mit MD5 um Serial zu generieren ! (https://www.delphipraxis.net/112237-keygen-mit-md5-um-serial-zu-generieren.html)

Delphiturbo 17. Apr 2008 10:55


Keygen mit MD5 um Serial zu generieren !
 
Hi

ich verwende D7. Wie installiere ich MD5 Package ?
Und wie kann ich mein Programm mit Hilfe von MD5 einen Benutzernamen und ein Serial schützen ?

danach muss ich ein Keygen programmieren um gültige Serial für Benutzer erzeugen

Da ich bis jetzt nie mit MD5 oder dec gearbeitet habe, bitte ich euch mir alle Schritte zu schreiben. Von der Installation von MD5 bis dem Code

Nuclear-Ping 17. Apr 2008 11:02

Re: Keygen mit MD5 um Serial zu generieren !
 
MD5 ist keine gute Idee für eine Serial. Viel zu lang. Für unser Serial-System kommen wir mit 8 Zeichen aus.

Delphiturbo 17. Apr 2008 11:13

Re: Keygen mit MD5 um Serial zu generieren !
 
8 Zeichen. das ist zu wenig. Ich brauche 14 oder mehr Zeichen :(

Nuclear-Ping 17. Apr 2008 11:17

Re: Keygen mit MD5 um Serial zu generieren !
 
Wofür?

freak4fun 17. Apr 2008 11:34

Re: Keygen mit MD5 um Serial zu generieren !
 
100.000.000 Kunden?! :gruebel:

Delphiturbo 17. Apr 2008 11:40

Re: Keygen mit MD5 um Serial zu generieren !
 
je länger desto sicherer oder
Auf jeden Fall ich kann jetzt nicht beurteilen

Wenn ich nach diesem Thema suche, finde ich viel Sachen SHA1 hash, MD5, DEC, ... !!!
Ich weiß aber nicht welche und wo soll ich anfangen !!!

Delphiturbo 17. Apr 2008 11:45

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von freak4fun
100.000.000 Kunden?! :gruebel:

Es muss etwa 1000 unterschiedliche Benutzernamen sein

Nuclear-Ping 17. Apr 2008 11:57

Re: Keygen mit MD5 um Serial zu generieren !
 
Unser System generiert beim ersten Start eine 8-stellige Hex-Nummer (0-F; und nein, kein CRC32 ;)) bestehend aus Komponenten wie CPU, HDD, LAN, ... Dazu kommt noch ein "Salt" aus dem Namen, den der Nutzer angibt und die Version der Software (Basis, Profi, ...). Gab bei über 400 Nutzern dieser Software bisher keine Probleme oder eine Kollision.

Wir hatten ganz am Anfang ein System aus 4 8er-Blöcken. Das fanden wir zwar auch gut, aber den meisten Kunden hat das ziemlich Probleme gemacht und teilweise absolut angenervt, da viele eben nunmal stinknormale Anwender sind, die gerade mal wissen, wie man auf direktem Wege ins Windows kommt, Word startet, eMails abruft (selbst da gibts noch viele Grauzonen), etc. Für einige ist sogar "Copy & Paste" ein Fremdbegriff.

Wenn die jetzt mit einem Freischaltsystem konfrontiert werden, was es erfordert, eine X-stellige alphanumerische Zeichenkombination anzugeben, hast du (oder derjenige der dann den Support macht) ständig Aufwand. Daher sollte das System so simpel und einfach wie möglich gehalten werden.

Was wir auch noch oft haben sind Leute, die den Dialog nicht lesen. Da steht ganz klar, dick und fett, dass man die angezeigte Nummer uns zukommen lassen soll. Stattdessen erhalte ich Mails von Leuten, die sich darüber beschweren, dass sie ihre Software mit der angezeigten Nummer nicht freischalten können, etc ... ;)

freak4fun 17. Apr 2008 12:01

Re: Keygen mit MD5 um Serial zu generieren !
 
Du sagst einfach, wie seiht es mit Sicherheitsumgehungen aus bei euch? Ist euch sowas bekannt?

Nuclear-Ping 17. Apr 2008 12:04

Re: Keygen mit MD5 um Serial zu generieren !
 
Bisher konnte ich keine Cracks oder Keygens für unsere Software finden, falls du das meinst.

Und nur weil eine Nummer länger ist heisst das nicht zwangsläufig, dass sie sicherer ist, solange sie eine gewisse Grundsicherheit hat. Zum Beispiel ist klar, dass ein 2-stelliger Code sicherer ist als ein 1-stelliger, 4-stelliger sicherer als ein 2-stelliger, ... 100%iger Sicherheits gibts nicht und so ... kennt man ja. ;)

Unsere Software beendet sich auch, wenn der Freischaltschlüssel 3x falsch eingegeben wurde.

spaxxn 17. Apr 2008 12:11

Re: Keygen mit MD5 um Serial zu generieren !
 
Wenn es dir so sehr um Sichrheit geht, warum verwendest du gerade für so ein Thema nicht RSA?

Den kodierten Inhalt könntest du dir dann auch wieder dekodieren, um dem Anwender zum Beispiel anzuzeigen, wie lange seine Lizenz gültig ist, falls du sowas brauchst.

Mal ein Anwendungsbeispiel:

Kunde erhält achtstelligen Zahlenschlüssel
Kunde gibt den Schlüssel beim Freischalten ein.
Aus Schlüssel,HDD-Schlüssel, MAC wird vom Client ein RSA-Code erzeugt.
RSA Code wird zum Server geschickt und dort entschlüsselt
Passender Schlüssel in der Datenbank wird gesucht und der RSA-Code zu diesem Schlüssel eingetragen.
In der DB liegen die Informationen zu Lizenzgültigkeit, Lizenzlaufzeit, Produkt etc...
Server erstellt neuen RSA-Code mit all diesen Infos und schickt ihn an den Client zurück.
Nun hat der Client "seinen" Schlüssel, über den das Produkt freigeschaltet ist in verschlüsselter Version vorliegen.

Btw. Das bedeutet allerdings, dass ein Webserver mit einem entsprechenden Modul läuft. Hatte damals für diesen Zweck eines mit Kylix für nen Apachen geproggt.

Delphiturbo 17. Apr 2008 12:53

Re: Keygen mit MD5 um Serial zu generieren !
 
Was ist mit der Installation von MD5 unter D7?

Klaus01 17. Apr 2008 12:59

Re: Keygen mit MD5 um Serial zu generieren !
 
Hier findest Du die md5.pas,
die brauchst Du nur in das Projektverzeichnis kopieren
und die Unit in den uses Deines Projektes angeben.

Grüße
Klaus

Delphiturbo 17. Apr 2008 13:49

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von Klaus01
Hier findest Du die md5.pas,
die brauchst Du nur in das Projektverzeichnis kopieren
und die Unit in den uses Deines Projektes angeben.

Grüße
Klaus

Das habe ich gemacht. Wie kann nun MD5 in mein Code binden ?

hier ist ein Beispiel in DP gefunden, funktioniert leider nicht :
Delphi-Quellcode:
function erstelleKey(benutzername:string):string;
var z : string;
i : integer;
begin
If Length(benutzername) > 0 then begin    // wird halt geprüft ob überhaupt ein username eingegebn wurde
For I := 1 to Length(benutzername) do     //jeder buchstabe wird einzeln durchgegangen
z := z + IntToHex(Ord(benutzername) + $82);//buchstabe wird in ascii umgewandelt mit ord, dann wird 82 hinzuaddiert und anschliessend wieder in
                                           //hex umgewandelt
result := z + benutzername[0]             //zum schluss werden all ergebnisse zusammengerechnet und nochmal der erste buchstabe des namens angehängt
end else result := 'eingabe darf nciht leer sein';
end;
Thema

Nuclear-Ping 17. Apr 2008 13:49

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von Delphiturbo
Was ist mit der Installation von MD5 unter D7?

Ja, manche müssen eben erst gegen die Wand fahren, damits klick macht. :mrgreen: Dir ist schon klar, dass MD5 32 Zeichen hat? ;)

Edit sagt, dass dein Beispiel rein garnix mit MD5 zu tun hat? Ausserdem ist z nicht initialisiert und was soll das am Ende bewirken? -> result := z + benutzername[0] ... Der erste Buchstabe wäre [1].

Delphiturbo 17. Apr 2008 14:21

Re: Keygen mit MD5 um Serial zu generieren !
 
gibst Du mir ein Beispiel, das mit MD5 zu tun hat
Wie ich vorher geschrieben, daß ich noch nicht mit MD5 Erfahrung gemacht habe

Klaus01 17. Apr 2008 14:32

Re: Keygen mit MD5 um Serial zu generieren !
 
Aloso wenn man sich eine wenig das md5.pas file anschaut,
dann springen einem folgende Funktionen ins Auge:

Delphi-Quellcode:
function MD5String(M: string): MD5Digest;
function MD5File(N: string): MD5Digest;
function MD5Print(D: MD5Digest): string;
Um nun einen hexMD5 String zu erhalten ist folgendes zu tun:

Delphi-Quellcode:
Edit1.text := md5Print(md5String('Dein String'));
Grüße
Klaus

Delphiturbo 17. Apr 2008 14:53

Re: Keygen mit MD5 um Serial zu generieren !
 
Ich bekomme tatsächlich 32 Zeichen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
//Edit1.text := md5Print(md5String('Dein String'));
Edit1.text := md5Print(md5String(Edit2.Text));
end;
Ich muss 3 Sachen haben : Key, Benutzername, Serial !
Wie kann ich testen

Nuclear-Ping 17. Apr 2008 14:57

Re: Keygen mit MD5 um Serial zu generieren !
 
Warum arbeitest du auch auf Stringebene, statt auf Binärebene?

Delphiturbo 17. Apr 2008 15:20

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von Nuclear-Ping
Warum arbeitest du auch auf Stringebene, statt auf Binärebene?

ich möchte nur testen um die Sache zu verstehen, wie das funktioniert

Wie gesagt 3 Sachen muss ich haben:

Benutzername : Das kann ich wie Du geschrieben hat, HDD- oder CPU-SN nehmen.

Key : ?!
Ich würde dafür einfach ein textfeld nehmen und wird in Programm gespeichert


Serial : !
Hier muss ich ein mathematische Funktion (Benutzername und Key -Kombination) einbauen oder

Wer kann mir ein Beispiel geben?

blackdrake 17. Apr 2008 15:24

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von Delphiturbo
Ich muss 3 Sachen haben : Key, Benutzername, Serial !

Was ist der Unterschied zwischen Key und Serial? Was willst du überhaupt machen? Willst du, dass der eingegebene Benutzername sich im Key/Serial wiederspiegelt?

Zitat:

Zitat von Nuclear-Ping
Warum arbeitest du auch auf Stringebene, statt auf Binärebene?

Lol, soll der Benutzer jetzt schon einen Binärcode eingeben? :stupid:

Wenn ich mal einen Vorschlag für ein "einfacheres" System für nicht so erfahrenere Delphi-Benutzer machen darf:

(Code vereinfacht zum Lernen)

Delphi-Quellcode:
function md5(input: string): string;
begin
  result := md5Print(md5String(input));
end;

function mein_serialgenerator(benutzername: string): string;
var
  mein_md5, mein_prekey, mein_serialkey: string;
const
  // Mögliche Sicherheitslücke: mein_seed kann man aus der EXE herauslesen. Aber ich will es ja einfach halten
  mein_seed := 'ABCD-Produkt-Produktversion-Edition';
begin
  // Dein Benutzername ist jetzt als MD5 festgehalten
  mein_md5 := md5(benutzername);

  // Damit jetzt nicht jeder daran herumspielt und einen eigenen md5 generiert, legst du einen Seed dazu und machst nochmal md5
  mein_prekey := md5(mein_seed + mein_md5);

  // Nun hast du aber 32 Zeichen. Tu das deinen Anwendern bitte nicht an.
  // Nimm die ersten 8 Zeichen meinetwegen. Das ist jetzt dein Serialkey, der aus dem Benutzernamen abgeleitet ist
  mein_serialkey := copy(mein_prekey, 0, 8);

  result := mein_serialkey;
end;

// Kontrolle der Benutzereingabe
function key_gueltig(eigegebener_benutzername, eingegebener_serialkey): boolean;
begin
  if LowerCase(mein_serialgenerator(eigegebener_benutzername)) <> LowerCase(eingegebener_serialkey) then
  begin
    result := false;
  end
  else
  begin
    result := true;
  end;
end;
Nicht sonderlich sicher. Aber akzeptabel. Gegen Disassembler ist das Pr0g halt nicht sicher.

PS: Überleg dir, ob du die Hardware des Benutzers miteinfließen lassen willst. Dann wäre Zwangsaktivierung etc. notwendig, was das Ganze ziemlich erschwert. Ist deine Software wirtschaftlich so entscheidend?

Gruß
blackdrake

Delphiturbo 17. Apr 2008 15:39

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von blackdrake
Was ist der Unterschied zwischen Key und Serial?

Key brauche um Serial (Passwort) in Keygen zu generieren
Serial : Passwort

blackdrake 17. Apr 2008 15:42

Re: Keygen mit MD5 um Serial zu generieren !
 
Dann in der Art?

Delphi-Quellcode:
Key := mein_serialgenerator(Serial);
Ich blick zwar nicht ganz durch, wie dein Sicherheitscheck ablaufen soll, aber ich hoffe, dass du mit meinem MD5-basierenden Keygen-System etwas anfangen kannst.

Gruß
blackdrake

Nuclear-Ping 17. Apr 2008 15:45

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von blackdrake
Lol, soll der Benutzer jetzt schon einen Binärcode eingeben? :stupid:

Was hat das damit zu tun?
Stringebene ist, die bereits erfolgte Ausgabe von Werten miteinander zu verketten / zu verarbeiten, wie es hier halt versucht wird, an Hand eines Hashs aus verschiedenen Werten eine Serial zu bilden.

Binärebene wäre, die Bits (oder wenigstens die Bytes) der vorhandenen Werte (Name, CPU, LAN, ...) miteinander zu verknüpfen, damit am Ende wieder eine brauchbare 32bit-Zahl (je nach Anspruch) rauskommt, wovon man dann eine Ausgabe erstellt.

Delphiturbo 17. Apr 2008 19:36

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von blackdrake
Dann in der Art?

Delphi-Quellcode:
Key := mein_serialgenerator(Serial);
blackdrake

also wenn ich den Code verwende :
Delphi-Quellcode:
key.text:= mein_serialgenerator(mein_serialkey);
Ich bekomme ja zwar ein String von 8 Zeichen : fe563e0d
aber was ist das ?!
Was ist dann mit Benutzername und Passwort ?

Ich verstehe nicht genau, wie ich den Benutzername, Passwort eingebe

Wie kann das Programm die Serial und Benutzername überprüfen ?

blackdrake 17. Apr 2008 19:39

Re: Keygen mit MD5 um Serial zu generieren !
 
Diese 8 Bytes sind die ersten 8 Byte von md5(Seed + md5(benutzername)). Siehe meinen ausführlich beschriebenen Code.

Als Benutzername kannst du auch ein Passwort einsetzen.

Und bei Benutzereingabe (Softwarefreischaltung) prüfst du mit key_gueltig()

oder eben direkt mit

if (md5(Seed + md5(passwort)) = benutzereingabe) then ...

OldGrumpy 18. Apr 2008 00:04

Re: Keygen mit MD5 um Serial zu generieren !
 
Wobei die Benutzereingabe auch knifflig sein kann. Man glaubt nicht, wie viele Leute Sachen wie Oh/Null, Eins/ell/Ih etc. nicht auseinander halten können. Wir sind irgendwann dazu übergegangen solche Zeichen auf jeweils ein erlaubtes pro "Verwechselset" zu reduzieren und dann in der Eingaberoutine die anderen stillschweigend direkt zu ersetzen vor der Keyprüfung... Der Support hat es uns wirklich sehr gedankt :)

Nuclear-Ping 18. Apr 2008 06:15

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von OldGrumpy
Wobei die Benutzereingabe auch knifflig sein kann. Man glaubt nicht, wie viele Leute Sachen wie Oh/Null, Eins/ell/Ih etc. nicht auseinander halten können. Wir sind irgendwann dazu übergegangen solche Zeichen auf jeweils ein erlaubtes pro "Verwechselset" zu reduzieren und dann in der Eingaberoutine die anderen stillschweigend direkt zu ersetzen vor der Keyprüfung... Der Support hat es uns wirklich sehr gedankt :)

Eins <> L war bisher bei uns nicht das Problem, da alle Buchstaben direkt nach groß umgewandelt werden bei der Eingabe. Aber das mit Oh <> Null kommt in der Tat auch bei uns häufig vor. Gute Idee das mit der stillschweigenden Ersetzung, werd ich glaube auch mal einbauen. :mrgreen:

OldGrumpy 18. Apr 2008 07:14

Re: Keygen mit MD5 um Serial zu generieren !
 
Tja, bei uns gabs da auch nur Grossbuchstaben, aber manche Leute lasen die Eins trotzdem als ell :) Sogar Zett/Zwei und Ess/Fünf war für manche ein Problem :) Allerdings muss ich dazu sagen, dass diese Sachen teilweise auch dem miesen Druck der Key-Aufkleber geschuldet waren, manche Distributionspartner sparten echt am total falschen Ende :mrgreen: Wobei man vom Standarduser aber eh keinen Denkprozess bei der Eingabe erwarten darf. Der nervt dann einfach den Support mit "geht nicht!" :) Für die Härtefälle unter den Kunden ohne Scanner usw. haben wir dann für den Support ein Tool gebaut das aus der Key-Datenbank mögliche Treffer rausfischt. *g*

Delphiturbo 18. Apr 2008 19:16

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von blackdrake
Diese 8 Bytes sind die ersten 8 Byte von md5(Seed + md5(benutzername)). Siehe meinen ausführlich beschriebenen Code.

Als Benutzername kannst du auch ein Passwort einsetzen.

Und bei Benutzereingabe (Softwarefreischaltung) prüfst du mit key_gueltig()

oder eben direkt mit

if (md5(Seed + md5(passwort)) = benutzereingabe) then ...

Woher kommen seed und benutzereingabe
oder meinst du mein_seed ?

Noch einmal
wenn ich so mache :
Delphi-Quellcode:
Edit3.text := md5Print(md5String(Edit1.Text));
// in Feld Edit1 habe ich "10" eingegeben
dann bekomme ich diese 32 String : d3d9446802a44259755d38e6d163e820

wie kann ich nun mit einem Code mit dem erzeugten String wieder meinen Wert "10" erhalten ?

everdream 18. Apr 2008 19:27

Re: Keygen mit MD5 um Serial zu generieren !
 
(fast) Garnicht. Eben nicht jeder Weg führt nach Rom ;-)

Namenloser 18. Apr 2008 19:28

Re: Keygen mit MD5 um Serial zu generieren !
 
Gar nicht, weil MD5 ein hash ist, das heißt, man hat sozusagen nur eine Quersumme, von der man aber nicht auf ihren Ursprung rückschließen kann. Nicht zuletzt deshalb wird das Verfahren ja auch gerne bei Passwörtern eingesetzt.

Olli 18. Apr 2008 19:45

Re: Keygen mit MD5 um Serial zu generieren !
 
Ich kann mich nur spaxxn anschliessen. Wir verwenden eine aehnliche Methode bei FPAV (alle 6er-Versionen) und das scheint ziemlich sicher zu sein. Bei uns geht es ja weniger um "Lizenzschluessel", als um "Abo-Schluessel", da man ja die DEF-Dateien ("Virensignaturen" ... und Heuristik etc) ueber ein Abo bezieht.

Grundlegend haben wir folgendes. Um Verwechslungen auszuschliessen, sind bestimmte Zeichenpaare tabu (bspw. 1 und I oder 0 und O). Wir haben also einen gewissen Wertebereich in dem der Schluessel kodiert wird (diese Kodierung ist nicht per-se geheim, da eben auch auf Clientseite eingesetzt). Dann gibt es einen Platz fuer eine Versionsnummer, damit der Server verschiedene Schluesselversionen unterscheiden und so bspw. ein zuvor kompromittiertes Geheimnis (mehr dazu spaeter) von einem neueren unterscheiden kann. Eine andere Version koennte sich von der Vorversion also bspw. einfach durch einen anderen geheimen Schluessel unterscheiden, koennte aber auch laenger sein, andere Daten oder die gleichen Daten in anderer Anordnung enthalten etc. pp.

Desweiteren gibt es einen geheimen Teil des Schluessels, welchen nur der Server entschluesseln kann (mit dem geheimen Schluessel). Man koennte ihn sicher knacken, aber dann koennen wir die Software updaten und bspw. eine neue Schluesselversion mit einem anderen Geheimnis einfuehren, oder bspw. serverseitig aehnliches tun wie in vielerlei Verschluesselungssoftware und einfach mit verschiedenen Schluesseln "probieren".

Der geheime Teil ist jener, der bspw. Dinge enthaelt wie die Tatsache wann der Aboschluessel ausgegeben wurde, wann er auslaeuft, zu welcher Software er gehoert usw. - der oeffentliche Teil hingegen enthaelt Daten, damit die jeweilige Clientsoftware grob unterscheiden kann, ob ein Schluessel akzeptabel ist oder nicht. Natuerlich obliegt dann die endgueltige Entscheidung dem Server, der auch den Schluessel fuer geheimen Teil des Aboschluessels hat. Im oeffentlichen Teil befindet sich insbesondere das Ablaufdatum des Schluessels, ein paar Flags und eine Checksumme. Clientseitig wird der oeffentliche Teil im Prinzip nur benutzt um anzuzeigen, dass ein Abo abgelaufen ist. Wuerde jemand das Datum dort manipulieren und die Checksumme ebenfalls, wuerde das serverseitig auffliegen.

Was bedeutet das? Es bedeutet, dass in diesem Fall ein Angreifer erstmal den verwendeten Verschluesselungsalgo finden muss. Danach muss er "nur" noch das Geheimnis herausbekommen und dann haetten wir ein Problem und muessten ein Softwareupdate rausgeben ;) ... und dann ginge es von Neuem los ... alles in allem sollte die Preisgestaltung dann dem Angreifer begreiflich machen, dass ein Kauf ihn billiger kommt. Aber Cracker rechnen wohl eher selten in Stunden Arbeitsaufwand oder so ... :mrgreen:

Delphiturbo 18. Apr 2008 20:24

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von NamenLozer
Gar nicht, weil MD5 ein hash ist, das heißt, man hat sozusagen nur eine Quersumme, von der man aber nicht auf ihren Ursprung rückschließen kann. Nicht zuletzt deshalb wird das Verfahren ja auch gerne bei Passwörtern eingesetzt.

Also mit dem Code :
Delphi-Quellcode:
Edit3.text := md5Print(md5String(Edit1.Text+Edit2.Text));
erhalte ich folgendes :
7f975a56c761db6506eca0b37ce6ec87 (=Serial)
Edit1.Text=10 vorgegeben
Edit2.Text=11 (vorgegeben)

Nun möchte umgekehrt machen :
Edit1.Text: 10
Edit2.Text: ??? (diesmal nicht vorgegeben und muss ich herausfinden)
Serial : 7f975a56c761db6506eca0b37ce6ec87 (Vorgegeben)

Wie kann ich nun den wert in Edit2.Text bekommen ?

Oder hat das nicht mit Mathematik zu tun :mrgreen:

everdream 18. Apr 2008 20:26

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von NamenLozer
Gar nicht

Zitat:

Zitat von everdream
Garnicht

Überhaupt nicht.

Delphiturbo 18. Apr 2008 20:29

Re: Keygen mit MD5 um Serial zu generieren !
 
Wie generiere ich dann Passwörter für Kunden :pale:

Klaus01 18. Apr 2008 21:10

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von Delphiturbo
Wie generiere ich dann Passwörter für Kunden :pale:

Du generierst aus den Userangaben einen Hashwert (z.B. MD5 oder SHA-1)
speicherst den bei Dir.

Will der User sich wieder anmelden, generierst Du wieder den Hashwert
und vergleichst ihn mit dem abgespeicherten.

Grüße
Klaus

dominikkv 18. Apr 2008 21:25

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von Delphiturbo
wie kann ich nun mit einem Code mit dem erzeugten String wieder meinen Wert "10" erhalten ?

Garnicht.
Das ist ja der Vorteil bei Hashes, es sind One-Way-Verschlüsselungen.
Du hast in deinem Programm irgendwo den gehashten Wert gespeichert. Wenn der user nun Benutzername und Passwort eingibt hashst du die 2 Strings wie oben erklärt und vergleichst das resultat mit deinem gespeicherten.

Delphiturbo 19. Apr 2008 10:38

Re: Keygen mit MD5 um Serial zu generieren !
 
wenn ich aber einen anderen wert als Username in Feld Edit1 oder Edit2 eingebe und generiere dann bekomme ich sicher einen anderen 32String !

wie kann ich vergleichen! Es ist sowieso immer ungleich, wenn ich mehrere user habe ?

Wie ich vorher geschrieben habe, ich habe vohrher MD5 oder hash keine Erfahrung gemacht. Das ist mein 1. Versuch

Der "Plackdarke" hat mir zwar einen Code als Beispiel für einen Keygen geschrieben, leider verstehe immer noch nicht, wie der Code ein gültiges Passwort genereriert :
Delphi-Quellcode:
function md5(input: string): string;
begin
  result := md5Print(md5String(input));
end;

function mein_serialgenerator(benutzername: string): string;
var
  mein_md5, mein_prekey, mein_serialkey: string;
const
  // Mögliche Sicherheitslücke: mein_seed kann man aus der EXE herauslesen. Aber ich will es ja einfach halten
  mein_seed := 'ABCD-Produkt-Produktversion-Edition';
begin
  // Dein Benutzername ist jetzt als MD5 festgehalten
  mein_md5 := md5(benutzername);

  // Damit jetzt nicht jeder daran herumspielt und einen eigenen md5 generiert, legst du einen Seed dazu und machst nochmal md5
  mein_prekey := md5(mein_seed + mein_md5);

  // Nun hast du aber 32 Zeichen. Tu das deinen Anwendern bitte nicht an.
  // Nimm die ersten 8 Zeichen meinetwegen. Das ist jetzt dein Serialkey, der aus dem Benutzernamen abgeleitet ist
  mein_serialkey := copy(mein_prekey, 0, 8);

  result := mein_serialkey;
end;

// Kontrolle der Benutzereingabe
function key_gueltig(eigegebener_benutzername, eingegebener_serialkey: String): boolean;
begin
  if LowerCase(mein_serialgenerator(eigegebener_benutzername)) <> LowerCase(eingegebener_serialkey) then
  begin
    result := false;
  end
  else
  begin
    result := true;
  end;
end;
Wie kann der Code ein Passwort erstellen ? ich sehe keine mathematike Funktion !

Klaus01 19. Apr 2008 10:44

Re: Keygen mit MD5 um Serial zu generieren !
 
Zitat:

Zitat von Delphiturbo
wenn ich aber einen anderen wert als Username in Feld Edit1 oder Edit2 eingebe und generiere dann bekomme ich sicher einen anderen 32String !

Wenn dem nicht so wäre, dann wäre der Hash auch völlig wertlos.

UserDaten1 -> MD5 Hash 1
UserDaten2 -> MD5 Hash 2

MD5 Hash 1 <> MD5 Hash2

Die Hashes sind bei Dir auf dem "Server" abgespeichert, zusammen mit den Userdaten.
Wenn der User nun seine Daten eingibt kannst Du den Hash der Daten errechnen,
stimmen diese mit den Werten überein die Du gespeichert hast ist der User identifiziert.

Gibt der User den Hash ein, kannst Du anhand von vergleichen feststellen
um welchen User es sich handelt.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:17 Uhr.
Seite 1 von 2  1 2      

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