88871
Goto Top

Wie generiere ich automatisch Serien-Nummern ?

Ich muss CD-Keys herstellen. Wie löse ich das am besten/einfachsten

Ich muss CD Keys generieren. Das Format sieht so aus: 1234-1234-12

Hat jemand einen Tipp wie ich solche automatisch generieren kann ? Per Tool, Script, VB, PHP oder was auch immer ?

Ich brauche etwa 1'000 Stück, also von Hand ist da nichts ^^

Herzlichen Dank

Content-Key: 148278

Url: https://administrator.de/contentid/148278

Printed on: April 19, 2024 at 21:04 o'clock

Member: H41mSh1C0R
H41mSh1C0R Aug 04, 2010 at 07:56:25 (UTC)
Goto Top
Also beim basteln eines algos für einen keygen ist deiner Phantasie eigentlich keine Grenzen gesetzt.

Um wenig Arbeit zu machen, wenn die Anzahl der Keys überschaubar ist, schreib in deinem Format einfach per Zufall 1000 Keys in eine Datei und prüfe danach automatisch ob es den Key schon gibt, wenn ja Doppelten Key rausschmeissen und einen neuen dazu und erneut prüfen.

Bei 1000 Stück betrachte ich das noch als überschaubar, sollten es später viel mehr werden, müsste man schon einen algo mit ner logik nehmen, denn wenn man wegen einem Key 1.000.000 Keys abklappern muss ist das schon sehr ineffizient.

Daher ist die Random Variante die schnellste und einfachste für deinen Anwendungsfall und nicht gleich für den findigen Kunden durchschaubar als einfach nur hochzählen. xD
Mitglied: 60730
60730 Aug 04, 2010 at 08:28:05 (UTC)
Goto Top
Moin,

nur zur Info:

Eine "Serien" Nummer ist/sind Nummern & Buchstabenkombinationen
- anhand der man idealerweise u.a das Herstelldatum ermitteln kann und die sollten daher fortlaufend sein.

Ein CD Key ist idealerweise ein Key mit eingebauter Prüfziffer. (vgl. ISBN)

Die Frage ist also, willst du zufällige oder eine Reihe von Zahlen?

Gruß
Member: maretz
maretz Aug 04, 2010 at 08:50:48 (UTC)
Goto Top
Wie möchtest du die denn abprüfen? Soll das z.B. mittels Datenbank gehen (d.h. online-prüfung) oder soll das auch offline gehen (d.h. berechnung des Codes ist möglich)

Im ersten Fall ganz simpel. Schreibe dir 1000 Keys mittels Random-Funktion in eine DB -> fertig. Jetzt lässt du dir 1000 Zettel mit je einem Key ausdrucken -> schon hast du alles was du brauchst.

Der zweite Fall ist da etwas komplexer. Denn generell is es einfach - du suchst dir nen Code aus (z.B. Quersumme muss die Zahl 7 ergeben ;) ). Schon kannst du aus der Eingabe erkennen ob das ganze passt - allerdings kann man das natürlich schnell auch wieder rausfinden und braucht den Code von dir nicht mehr. Oder du machst das etwas komplexer (z.B. mittels Zahlen/Buchstaben) bei dem du das alles erst in ein Format wandelst und sagst das es dann in dem Format bestimmte Eigenschaften erfüllen muss. Da ist dann die Frage: Was glaubst du wieviel Aufwand in das Knacken gesteckt wird - und dann ergibt sich daraus wie aufwendig dieser Schutz sein soll...

Und in EINEM Punkt musst du dir auch ganz klar sein: Ein "CD-Key" ist immer recht unsicher wenn du den nicht in die jeweilige CD fest mit eincompilierst (und selbst dann ist es mit nem Debugger recht einfach! - aber damit können nicht soviele Leute umgehen...). Denn jeden Code den du auf nen Zettel schreibst kann ich auch einfach per Email versenden, in die üblichen Key-Listen der bekannten Seiten eintragen usw.. -> schon ist dein komplexer Algorithmus für'n Ar...
Member: ITwissen
ITwissen Aug 04, 2010 at 10:57:59 (UTC)
Goto Top
In Perl:

for ($i=1;$i<1000;$i++) {
     $sn=sprintf("%010d",$i);  
     printf("%s-%s-%s\n",substr($sn,0,4), substr($sn,4,4), substr($sn,8,2));  
}
Mitglied: 88871
88871 Aug 04, 2010 at 12:47:31 (UTC)
Goto Top
..
Mitglied: 88871
88871 Aug 04, 2010 at 13:04:54 (UTC)
Goto Top
Hoied

Ja das sind alles tolle Lösungen, danke. Aber wie generiere ich eben diese 1'000 ? Mit was


ITWissen: Das könnte ich ja unter php ausführen oder ?
Member: ITwissen
ITwissen Aug 04, 2010 at 13:12:45 (UTC)
Goto Top
Ja, aber vielleicht zur übersichtlichkeit noch ein "<br>" rein.

<?
for ($i=1;$i<1000;$i++) {
     $sn=sprintf("%010d",$i);  
     printf("%s-%s-%s<br>\n",substr($sn,0,4), substr($sn,4,4), substr($sn,8,2));  
}
?>
Mitglied: 88871
88871 Aug 04, 2010 at 13:27:51 (UTC)
Goto Top
Hoi ITWissen

das klappt, aber der script zählt nur immer +1 und gibt wieder aus face-smile

also da wären Buchstaben gemischt besser. und keine 000-000-01 etc..... auf die schnelle weiss ich nun nicht wie dein php script anzupassen

ps: die serinenummern bestehen nur aus buchstaben
Mitglied: 88871
88871 Aug 04, 2010 at 13:29:56 (UTC)
Goto Top
Zitat von @60730:


Die Frage ist also, willst du zufällige oder eine Reihe von Zahlen?

Gruß


zufällige buchstaben

OERD-DGGB-DW z.b.
Member: ITwissen
ITwissen Aug 04, 2010 at 13:37:17 (UTC)
Goto Top
Du musst dich jetzt schon mal entscheiden, was du willst. Plötzlich sind deine Seriennummer nur Buchstaben, oben steht "1234-5678-90". Aus Zahlen Buchstaben machen ist ja nicht so schierig.

Wenn du nicht mal diesen einfachen 4 Zeiler in PHP lesen kannst, ohne ihn gleich laufen zu lassen, solltest du dich dringend in der Materie fortbilden.

So macht das keinen Spass.

Ich nehme 100 Euro (Freundschaftspreis!) die Stunde, dann schreib ich dir das in PHP. Hier gibt es nur "Anregungen", maximal Codeschnippsel.
Sorry, dass ich das so deutlich sagen muss. Du darfst jetzt auch sauer auf mich sein face-smile
Mitglied: 88871
88871 Aug 04, 2010 at 13:44:04 (UTC)
Goto Top
ne eazy.. hab keine zeit sauer zu sein... zahlen/buchstaben habe ich übersehen, bin ja keine maschine.

danke fuer den vorschlag. werde mich aber mit deiner lösung weiter beschäftigen....

vielleicht gibts ja noch lösungsvorschläge mit VisualBasic (Access z.b.) oder ganz einfach Excel. Vielleicht sollte ich mal noch im Excel Bereich was posten.
Member: maretz
maretz Aug 04, 2010 at 13:48:40 (UTC)
Goto Top
und damit du mal nen Ansatz hast:

Alphabet hat 26 - 52 Buchstaben (je nachdem ob du ne Unterscheidung Klein-/Gross beachten willst). EINE (stumpfe) Methode wäre jetzt also nen Array mit 26-52 Elementen
$Wert="A";
$Wert[1]="B";

Jetzt noch nen Random der dir ganzzahlige Werte zwischen 0-25/51 rauswirft.... Und das ganze dann in ner Schleife mit 12 Durchläufen -> fertig ist dein Generator...

Den fertigen Code darfst du dir eben in 3 Minuten selber zusammenballern...
Member: ITwissen
ITwissen Aug 05, 2010 at 05:57:34 (UTC)
Goto Top
Weil es wirklich einfach ist, hier mit Buchstaben:

<?
for ($i=1;$i<1000;$i++) {
     $sn=strtr(sprintf("%010d",$i),'0123456789','ABCDEFGHIJ');  
     printf("%s-%s-%s<br>\n",substr($sn,0,4), substr($sn,4,4), substr($sn,8,2));   
}
?>

Hinweis: mit Zufallszahlen, muss man noch checken, ob eine Zeichenfolge zweimal vorkommt.