AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

was wie ein keygen erstellen

Ein Thema von battlemonster · begonnen am 20. Sep 2006 · letzter Beitrag vom 21. Sep 2006
Antwort Antwort
Seite 3 von 3     123   
wellilein

Registriert seit: 15. Sep 2006
Ort: 78112 St. Georgen
7 Beiträge
 
#21

Re: was wie ein keygen erstellen

  Alt 21. Sep 2006, 19:54
Warum wollt ihr ihm denn immer andere Lösungen aufdrängen?

Hier ist gültiger C# Code, der genau das macht was er will.
Zum Laufen lassen braucht man eine Form, einen Button und eine Textbox.
Delphi-Quellcode:
        private void button1_Click(object sender, EventArgs e)
        {
            // Initialisieren
            string[][] nummern = new string[4][];
            nummern[0] = new string[] { "2345", "3456", "4567", "5678" }
;
            nummern[1] = new string[] { "8568", "7933", "2473", "3839" };
            nummern[2] = new string[] { "5648", "2214", "3839", "2847" };
            nummern[3] = new string[] { "3738", "6454", "3949", "8394" };

            string serial = "";
            Random generator = new Random();

            // Generieren
            for (int i = 0; i < nummern.Length; i++)
            {
                int r = generator.Next(nummern[i].Length);
                serial += nummern[i][r];
                if (i != nummern.Length - 1)
                {
                    serial += "-";
                }

            }

            // Ausgeben
            textBox1.Text = serial;
        }
Noch ein Button und noch eine Textbox, um die Seriennummer auch wieder zu überprüfen:
Delphi-Quellcode:
        private void button2_Click(object sender, EventArgs e)
        {
            // Einlesen
            string serial = textBox1.Text;

            // Initialisieren
            string[][] nummern = new string[4][];
            nummern[0] = new string[] { "2345", "3456", "4567", "5678" }
;
            nummern[1] = new string[] { "8568", "7933", "2473", "3839" };
            nummern[2] = new string[] { "5648", "2214", "3839", "2847" };
            nummern[3] = new string[] { "3738", "6454", "3949", "8394" };
            
            // Überprüfen
            bool correct = true;
            string[] parts = serial.Split(new char[] { '-' });
            for (int i = 0; i < parts.Length; i++)
            {
                bool partFound = false;
                for (int j = 0; j < nummern[i].Length; j++)
                {
                    if (nummern[i][j] == parts[i])
                    {
                        partFound = true;
                    }

                }

                correct &= partFound;
            }

            // Ausgeben
            if (correct)
            {
                textBox2.Text = "Die Seriennummer ist ok";
            }

            else
            {
                textBox2.Text = "Die Seriennummer ist falsch";
            }

        }
Ich habe mir erlaubt, das in C# zu schreiben. Immerhin gibt es C# ja auch von Borland
Ich hab das mal absichtlich in zwei völlig unabhängige Funktionen gepackt. Immerhin soll das später jamal in zwei unterschiedlichen Programmen laufen.

Gruß, Thomas
Thomas W.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#22

Re: was wie ein keygen erstellen

  Alt 21. Sep 2006, 19:59
Zitat von wellilein:
Warum wollt ihr ihm denn immer andere Lösungen aufdrängen?
Hier will ihm keiner immer andere Lösungen aufdrängen Es wird ihm nur auf seine Fragen geantwortet... Du bist derjenige, der ihm hier eine vollständige (und dazu noch IMHO wenig hilfreiche) Lösung anbietet.
Zitat von wellilein:
Hier ist gültiger C# Code, der genau das macht was er will.
[...]
Ich habe mir erlaubt, das in C# zu schreiben. Immerhin gibt es C# ja auch von Borland
Und du glaubst, daß ihm das was bringt? Zum einen unterscheidet sich C# sowohl in Syntax als auch in diesem Fall von der Herangehensweise signifikant. Und er bekommt es bisher ja noch nicht einmal in Delphi gebacken. Zumal dein Code auch noch keineswegs "genau das macht, was er will"

Hier geht es nicht darum, aller Welt zu zeigen, wie schnell und toll man etwas zustandebringt, sondern darum, jemandem bei einem Problem zu helfen...
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#23

Re: was wie ein keygen erstellen

  Alt 21. Sep 2006, 20:06
Delphi-Quellcode:
// Generiert einen CD-KEY
function CreateKey : String;
var qs : Integer;
    r : Integer;
    s : String;
begin
repeat
qs := 0;
s := '';
repeat
  r := random(25)+65;
  s := s+ Chr(r);
  qs := qs + r;
  if qs + 65 > 975 then begin
   qs := qs - r;
   delete(s,length(s),1);
   s := s + chr(975-qs);
   qs := qs + (975-qs);
  end;
until qs = 975;
until (Ord(s[Length(s)]) <= 90) and (Ord(s[Length(s)]) >= 65);
Result := s;
end;

// Zum überprüfen ob ein CD-KEY OK ist
function IsRight(S : String) : Boolean;
var i, qs: integer;
begin
  qs := 0;
  for i := 1 to length(s) do begin
   qs := qs+ord(s[i]);
  end;
  if qs = 975 then Result := true
  else Result := false;
end;
Die erste Funktion generiert einen CD-KEY, mit der zweiten kannst du sie überprüfen.. Richtlinie war bei mir das die Quersumme der Ord(Chars) = 975 sein muss. Das ist sicher nicht so professionell aber es klappt

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
panzerfischer

Registriert seit: 18. Sep 2006
Ort: Ilmenau
33 Beiträge
 
#24

Re: was wie ein keygen erstellen

  Alt 21. Sep 2006, 20:21
meine version:

Delphi-Quellcode:
function ran(range:integer):integer;
begin
randomize;
result:=trunc(random(range))
end;

function zahl:string;
var v1,v2,v3,v4,v5:string;
begin
v1:=IntToStr((Ran(8)+1)*10000+Ran(9)*1000+Ran(9)*100+Ran(9)*10+ran(9));
v2:=IntToStr((Ran(8)+1)*10000+Ran(9)*1000+Ran(9)*100+Ran(9)*10+ran(9));
v3:=IntToStr((Ran(8)+1)*10000+Ran(9)*1000+Ran(9)*100+Ran(9)*10+ran(9));
v4:=IntToStr((Ran(8)+1)*10000+Ran(9)*1000+Ran(9)*100+Ran(9)*10+ran(9));
v5:=IntToStr((Ran(8)+1)*10000+Ran(9)*1000+Ran(9)*100+Ran(9)*10+ran(9));

result:=v1+'-'+v2+'-'+v3+'-'+v4+'-'+v5;

end;
das ist wie gesagt, nur die generierung.

die anschließende überprüfung willst du gar nicht sehen, die ist krank (warum einfach, wenn's auch kompliziert geht) aber meiner meinung nach nicht so leicht zu knacken, ein beispiel:

13452-32743-47463-57395-73984 ist die generierung
11598-31729-10767-18434-27217 ist die dazugehörige lösung
  Mit Zitat antworten Zitat
wellilein

Registriert seit: 15. Sep 2006
Ort: 78112 St. Georgen
7 Beiträge
 
#25

Re: was wie ein keygen erstellen

  Alt 21. Sep 2006, 20:26
Zitat von leddl:
... ihm hier eine vollständige (und dazu noch IMHO wenig hilfreiche) Lösung anbietet.
Vollständig war meine Absicht, aber warum wenig hilfreich

Zitat von leddl:
Und du glaubst, daß ihm das was bringt? Zum einen unterscheidet sich C# sowohl in Syntax als auch in diesem Fall von der Herangehensweise signifikant. Und er bekommt es bisher ja noch nicht einmal in Delphi gebacken.
Indem ich die Lösung in C# vorgebe muss er es selbst nach Delphi umsetzen.
Zudem hat er ja noch gar nicht gesagt, in welcher Sprache er das ganze umsetzen will. Vielleicht Delphi.NET?

An der fehlenden OO von Delphi kann es auch nicht liegen. Mit OO hat das ganze nichts zu tun. Das hier ist funktionale Programmierung und das hab ich bei meinem C# bereits berücksichtigt.
Zitat von leddl:
Zumal dein Code auch noch keineswegs "genau das macht, was er will"
Jedenfalls hat er nichts davon erwähnt, dass er einen CD Key mit der Quersumme 967 möchte, sondern mit einer vorgegebenen Anzahl an vierstelligen Nummern, die er sogar noch aufgelistet hat. Und mich ärgerts ein bisschen, dass niemand darauf eingeht.
Zitat von leddl:
Hier geht es nicht darum, aller Welt zu zeigen, wie schnell und toll man etwas zustandebringt, sondern darum, jemandem bei einem Problem zu helfen...
Ich sehe schon, wir unterscheiden uns hier von www.experts-exchange.com
Nun, ich will zusehen, dass ich zukünftig auf die Lösung hinleite und keinen Code vorgebe.

, Thomas
Thomas W.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#26

Re: was wie ein keygen erstellen

  Alt 21. Sep 2006, 20:44
Zitat von wellilein:
Vollständig war meine Absicht, aber warum wenig hilfreich
Weil er - wie gesagt - wohl bereits Probleme hat, es in Delphi hinzubekommen, dann wird es ihm wohl auch nicht gerade leichtfallen, C# in Delphi zu übersetzen
Zitat von wellilein:
Indem ich die Lösung in C# vorgebe muss er es selbst nach Delphi umsetzen.
Zudem hat er ja noch gar nicht gesagt, in welcher Sprache er das ganze umsetzen will. Vielleicht Delphi.NET?
An der fehlenden OO von Delphi kann es auch nicht liegen. Mit OO hat das ganze nichts zu tun. Das hier ist funktionale Programmierung und das hab ich bei meinem C# bereits berücksichtigt.
Nein, darum gehts mir nicht. Die Sache mit den Zufallszahlen läuft unter C# eben anders ab als unter Delphi, und genau danach hatte er ja gerade gefragt. Da nützt es wenig, ihm zu zeigen, wie es ihn C# läuft
Und daß es um Delphi und nicht .NET geht, erkennst du daran, daß als Sprache Pascal angegeben ist
Zitat von wellilein:
Jedenfalls hat er nichts davon erwähnt, dass er einen CD Key mit der Quersumme 967 möchte, sondern mit einer vorgegebenen Anzahl an vierstelligen Nummern, die er sogar noch aufgelistet hat. Und mich ärgerts ein bisschen, dass niemand darauf eingeht.
Naja, wenn man ihm zeigt, wie er eine Zufallszahl erstellen kann, dann sollte ihm schnell klarwerden, wie er mehrere davon erstellen kann. Gegen den Teil deines Codes habe ich aber auch nichts. Was ich meinte war, daß er die "Eingabe" auf eine völlig andere Art haben möchte. So ganz durchgestiegen bin ich auch nach seiner zweiten Erklärung nicht, aber soweit ich das sehe, soll das alles etwas anders funktionieren... Kann mich in dem Punkt aber auch irren (Soll auch schonmal vorgekommen sein )
Zitat von wellilein:
Ich sehe schon, wir unterscheiden uns hier von www.experts-exchange.com
Nun, ich will zusehen, dass ich zukünftig auf die Lösung hinleite und keinen Code vorgebe.
Jupp, ich sehe schon, wir verstehen uns Es ist einfach nicht Sinn und Zweck der DP (auch wenn es trotzdem oft getan wird) einfach einen Quellcode vorzucoden. Hat man den Hintergrund nicht verstanden, nützt einem die Hilfe relativ wenig. Daher sollte das Ziel eher sein, schrittweise zur Lösung vorzudringen, bzw den Fragesteller dazu zu animieren, die Lösung mit einiger Hilfe selbst zu finden.

Also nimm meine (ich gebe zu) aggressiven Posts nicht allzu ernst, das ist einfach meine Art
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 09:04 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