Autor Beitrag
jackie21
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 27.07.05 01:49 
hi
Ich wollte mal wissen wie das in Delphi funktioniert ein eigener Key Generator zu Programmieren, also ich habe ein DVD Datenbank geschrieben, wo man sich nach ein paar Tagen Registrieren muss, und dazu möchte ich einen Key generator für mein DVD Datenbank schreiben.
Wenn ich in Edit1 z.B. Ein Name eingebe, dann soll jede Buchstabe generiert werden und in Panel1 angezeigt werden, und diese generierte Key soll mein Datenbank dann anehmen können.
Gibt es vieleicht Tutorials oder sowas in der art, wo man das lernen kann, ich bin euch sehr dankbar wenn ihr mir ein paar tips geben könnt wie das genau funktioniert, ich danke euch schonmal :wink:

jackie21


Moderiert von user profile iconGausi: Topic aus Programmierwerkzeuge verschoben am Mi 03.08.2005 um 08:47
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Mi 27.07.05 03:36 
Was Du brauchst - die Funktion ORD und FORMAT, vielleicht noch CHR.
Der Rest ist pure Mathematik.

Denk Dir eine Funktion aus.
Dabei ist jede Funktion denkbar, denn Du hast Definitions- (Name) und Wertebereich (Serial) auf dem Zielrechner.

Kannst einfach die Zeichen im ASCII Code verschieben. y=x+c. Zu einfach.
Kannst einfach die Zeichen mit einem vordefinierten Code XOR nehmen. y=x XOR c. Zu einfach.
Kannst einfach die Summe der ASCII Codes nehmen und mit einer festen Zahl multiplizieren, das Ergebnis = 32Bit-HexCode.
etc etc

Es gibt soviele Möglichkeiten. Lass Deiner Fantasie freien Lauf!

Jedenfalls musst Du es so sehen: aus einem Namen (A) wird eine Serial (X) im Keygen. Die Software selbst besitzt ebenso diesen Keygen implementiert (als Code). Sie generiert aus dem Namen (B) ebenso eine Serial (Y). Aus der Gleichheit der Algorithmen folgt folgende Äquivalenz: wenn A = B, dann ist auch X = Y - Serial korrekt!

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
en!gma
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 378

win xp
delphi 7.0
BeitragVerfasst: Mi 27.07.05 10:26 
mal ein kleines beispiel
habs nicht getestet:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
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;
jackie21 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 27.07.05 13:09 
Ich danke dir, aber wenn ich dieses Code jetzt in mein Projekt ausprobieren will dann erhalte ich vom Compiler diese Fehlermeldung:

[Error] Unit1.pas(32): Incompatible types
[Error] Unit1.pas(34): Element 0 inaccessible - use 'Length' or 'SetLength'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

da ist irgandwo ein kleiner fehler drinn, ich weiss nur nicht wo, könntest du mir bitte schreiben wo genau der fehler ist, ich danke dir schonmal für die antwort :wink:

jackie21
hallo
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: Mi 27.07.05 13:38 
Anstatt [0] musst du [1] hernehmen! Dann ist es accessible!

_________________
Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Mi 27.07.05 13:46 
und bei inttohex fehlt nen 2. parameter, da musst du nen ,2 machen

inttohex(irgendwas,2)

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
jackie21 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 27.07.05 15:27 
das funktioniert nicht bei IntToHex, könntest du mir vieleicht schreiben wie du das meinst, ich danke dir schonmal :wink:

jackie21
zemy
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 207

Win XP Prof.
D7
BeitragVerfasst: Mi 27.07.05 15:59 
Mal ne ganz dumme Idee...

ausblenden Delphi-Quelltext
1:
 Serial:= MD5 ( Name + '_dummyText');					


^^ Bräuchteste nur noch ne MD5-Funktion (oder irgend ein anderer Hashalgorythmus..)

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.

_________________
LifeIsToShortToThinkAboutTheShortness
jackie21 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 27.07.05 16:16 
ich kenne mich zwar noch nicht so perfekt in Delphi aus, daher wollte ich fragen ob ihr mir vieleicht den Komplette Quelltext posten könnt, das wenn ich auf Button1 Klicke, dann soll den Name von Edit1.Text als generierte Key in Panel1.Caption angezeigt werden, ich bin euch sehr dankbar wenn ihr das machen könnt, ich danke euch schonmal :cry:

jackie21
DaRkFiRe
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 526

WinXP Home & Professional
C, C++, Delphi
BeitragVerfasst: Mi 27.07.05 16:26 
Also wer ein bisschen Ahnung hat, der sieht: oh, 32 Zeichen, davon auch noch Hexcodes - könnte MD5 sein - hasht, und schon hat er ne Serial - neee, zu einfach!!!

_________________
Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
zemy
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 207

Win XP Prof.
D7
BeitragVerfasst: Do 28.07.05 15:03 
Deshalb noch der Dummytext. Müsste man nur noch ein bissel eleganter anstellen. Stet ja sonst fast im Klartext in der Exe :D Kannst ja auch nur die ersten 16 (10, 8, ... ) Zeichen nehmen oder noch 'n XOR drüber jagen. Dann ist der Hash nicht mehr zu erkennen.

PS: Sorry wegen Delphitags, war eigentlich nur als Pseudocode gedacht...

_________________
LifeIsToShortToThinkAboutTheShortness
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 28.07.05 15:15 
user profile iconjackie21 hat folgendes geschrieben:
ich kenne mich zwar noch nicht so perfekt in Delphi aus, daher wollte ich fragen ob ihr mir vieleicht den Komplette Quelltext posten könnt, das wenn ich auf Button1 Klicke, dann soll den Name von Edit1.Text als generierte Key in Panel1.Caption angezeigt werden, ich bin euch sehr dankbar wenn ihr das machen könnt, ich danke euch schonmal :cry:

Das solltest du schon selbst versuchen! Wenn du wo nicht weiterkommst, können wir dir helfen, aber kompletten Source? Das ist nicht Sinn des Forums.
Und vor allem wäre es wohl auch kaum sinnvoll, oder?
Jeder, der diesen Post deinem Programm zuordnet, weiß sofort, wie dein Key erzeugt wird.
Wie bereits weiter oben angesprochen, da musst du dir eine mathematische Methode überlegen, wie du die Verschlüsselung durchführst.

Es gibt zum Beispiel XOR, wenn man das zweimal mit nem Schlüssel macht, kommt wieder dasselbe raus. Aber dazu steht auch einiges im Netz.

Ein kleiner Code-Schnipsel, wie sowas grundsätzlich geht, von mir aus, aber fertig ist das nicht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
for i := 0 to Length(tmpString) do
begin
  Result[i] := Chr(Ord(tmpString[i]) xor Key[i]);
end;

Sollte so ungefähr gehen. Dabei muss Key genauso lang wie der String sein und array of Byte sein.

Das sollte in beide Richtungen gehen.
ShiKai
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mi 03.08.05 01:43 
meinst du nicht, dass ein ein one time pad ein bissel zuviel des guten
ist? :lol:
ich mache das meistens so, dass ich nicht nur nen namen von dem user
haben will, sondern auch eine e-mail-addy...
damit hat man dann also gleich 2 daten, die man nutzen kann...

dann kannt du ja z.b. den namen mit der addy und das ergebnis nochmal
mit dem namen "verschlüsseln" oder weiß der geier...


wfg,
ShiKai

Moderiert von user profile iconTino: PGP Signatur entfernt.