Delphi-PRAXiS
Seite 3 von 5     123 45      

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)

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 ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Seite 3 von 5     123 45      

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