AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Keygen mit MD5 um Serial zu generieren !
Thema durchsuchen
Ansicht
Themen-Optionen

Keygen mit MD5 um Serial zu generieren !

Ein Thema von Delphiturbo · begonnen am 17. Apr 2008 · letzter Beitrag vom 23. Apr 2008
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#31

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 18. Apr 2008, 19:27
(fast) Garnicht. Eben nicht jeder Weg führt nach Rom
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#32

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 18. Apr 2008, 19:28
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.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#33

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 18. Apr 2008, 19:45
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 ...
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#34

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 18. Apr 2008, 20:24
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 :
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
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#35

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 18. Apr 2008, 20:26
Zitat von NamenLozer:
Gar nicht
Zitat von everdream:
Garnicht
Überhaupt nicht.
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#36

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 18. Apr 2008, 20:29
Wie generiere ich dann Passwörter für Kunden
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#37

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 18. Apr 2008, 21:10
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
Klaus
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#38

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 18. Apr 2008, 21:25
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.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Delphiturbo
(Gast)

n/a Beiträge
 
#39

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 19. Apr 2008, 10:38
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 !
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#40

Re: Keygen mit MD5 um Serial zu generieren !

  Alt 19. Apr 2008, 10:44
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
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 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