Zum Inhalt springen

Seriennummer erzeugen


DBO

Empfohlene Beiträge

Also, gleich zum Beginn ich möchte KEINEN Generator haben, damit ich irgendein Programm Cracken kann.

Mein Problem ist ehr umgekehrt, ich und mein Kollege entwickeln zur Zeit kleiner Tools für den PDA, diese sollen demnächst in die Pilotphase gehen.

Um das ganze zu schützen, möchten wir eine Seriennummer generieren. Nun bin ich auf der Such nach einen Passenden algorythmus, den wir evtl. anpassen können um damit unsere Nummer zu generieren.

Was auch super wäre, wenn jemand ein Adresse kennt, wo man sich einen freeware Seriennummer generator runterladen kann, um die ganze Logik besser zu verstehen(optimal wäre dann, wenn der Code in C bzw C++ wär, da wir beide in dieser Sprache fitter sind als in anderen)

Ich bin auch für jeden Link dankbar der mir bei den Thema weiterhilft.

P.S. Bin mer net sicher ob des in des Forum hier reinpasst wenn net bitte verschieben:OD

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin erstmal! :)

Keine endgültige Lösung, aber man kann darauf aufbauen.

Doku habe ich leider nicht da, lag halt "as is" auf meiner Platte rum.

Jedem BN hat damit eine feste SN und umgekehrt ;)

Hoffe ich konnte euch damit helfen.

MFG

EAngel

// Binary 2 Text

#include <stdio.h>

#include <stdlib.h>

// byte structure for struct nbyte

{

int bit[8];

}nbyte;

int main(int argc, char *argv[])

{

FILE *f1,*f2;

int a,b,c,d,j,k,r,n[8];

struct nbyte bt[256];

struct nbyte tb[4];

j = 0;

for(n[0]=0;n[0]<=1;n[0]++)

for(n[1]=0;n[1]<=1;n[1]++)

for(n[2]=0;n[2]<=1;n[2]++)

for(n[3]=0;n[3]<=1;n[3]++)

for(n[4]=0;n[4]<=1;n[4]++)

for(n[5]=0;n[5]<=1;n[5]++)

for(n[6]=0;n[6]<=1;n[6]++)

for(n[7]=0;n[7]<=1;n[7]++)

{

for(k=0;k<8;k++)

bt[j].bit[k]=n[k];

j++;

}

if(argc < 2)

{

printf("Encode data to Text \n");

printf("Decode Text to data \n");

exit(0);

}

// argv 1 = in 2 = out

if(*(argv[1]+0) == 'e')

{

f1 = fopen( argv[2] , "rb" );

f2 = fopen(argv[3], "wb" );

if(f1 == 0 || f2 == 0) return 0;

while(!feof(f1))

{

a = fgetc(f1);

b = fgetc(f1);

c = fgetc(f1);

tb[0].bit[0] = 0;

tb[0].bit[1] = 0;

tb[0].bit[2] = bt[a].bit[0];

tb[0].bit[3] = bt[a].bit[1];

tb[0].bit[4] = bt[a].bit[2];

tb[0].bit[5] = bt[a].bit[3];

tb[0].bit[6] = bt[a].bit[4];

tb[0].bit[7] = bt[a].bit[5];

tb[1].bit[0] = 0;

tb[1].bit[1] = 0;

tb[1].bit[2] = bt[a].bit[6];

tb[1].bit[3] = bt[a].bit[7];

tb[1].bit[4] = bt.bit[0];

tb[1].bit[5] = bt.bit[1];

tb[1].bit[6] = bt.bit[2];

tb[1].bit[7] = bt.bit[3];

tb[2].bit[0] = 0;

tb[2].bit[1] = 0;

tb[2].bit[2] = bt.bit[4];

tb[2].bit[3] = bt.bit[5];

tb[2].bit[4] = bt.bit[6];

tb[2].bit[5] = bt.bit[7];

tb[2].bit[6] = bt[c].bit[0];

tb[2].bit[7] = bt[c].bit[1];

tb[3].bit[0] = 0;

tb[3].bit[1] = 0;

tb[3].bit[2] = bt[c].bit[2];

tb[3].bit[3] = bt[c].bit[3];

tb[3].bit[4] = bt[c].bit[4];

tb[3].bit[5] = bt[c].bit[5];

tb[3].bit[6] = bt[c].bit[6];

tb[3].bit[7] = bt[c].bit[7];

a = 0;

for(r=0;r<4;r++)

for(j=0;j<64;j++)

{

a = 0;

for(k=0;k<8;k++)

if(tb[r].bit[k] != bt[j].bit[k])a=1;

if(a == 0)

{

if(j >= 0 && j < 26 ) fprintf(f2,"%c",'A'+j);

if(j >= 26 && j < 52 )fprintf(f2,"%c",'a'+j-26);

if(j >= 52 && j < 62 )fprintf(f2,"%c",'0'+j-52);

if(j == 62 )fprintf(f2,"+");

if(j == 63 )fprintf(f2,"-");

// fprintf(f2,"%c",j);

}

}

}

fclose(f2);

fclose(f1);

}

if(*(argv[1]+0) == 'd')

{

f1 = fopen( argv[2] , "rb" );

f2 = fopen(argv[3], "wb" );

if(f1 == 0 || f2 == 0) return 0;

while(!feof(f1))

{

a = fgetc(f1);

b = fgetc(f1);

c = fgetc(f1);

d = fgetc(f1);

if(a >= 'A' && a <= 'Z') a = a-'A';

else if(a >= 'a' && a <= 'z') a = a-'a'+26;

else if(a >= '0' && a <= '9') a = a-'0'+52;

else if(a == '+') a = 62;

else if(a == '-') a = 63;

if(b >= 'A' && b <= 'Z') b = b-'A';

else if(b >= 'a' && b <= 'z') b = b-'a'+26;

else if(b >= '0' && b <= '9') b = b-'0'+52;

else if(b == '+') b = 62;

else if(b == '-') b = 63;

if(c >= 'A' && c <= 'Z') c = c-'A';

else if(c >= 'a' && c <= 'z') c = c-'a'+26;

else if(c >= '0' && c <= '9') c = c-'0'+52;

else if(c == '+') c = 62;

else if(c == '-') c = 63;

if(d >= 'A' && d <= 'Z') d = d-'A';

else if(d >= 'a' && d <= 'z') d = d-'a'+26;

else if(d >= '0' && d <= '9') d = d-'0'+52;

else if(d == '+') d = 62;

else if(d == '-') d = 63;

tb[0].bit[0] = bt[a].bit[2];

tb[0].bit[1] = bt[a].bit[3];

tb[0].bit[2] = bt[a].bit[4];

tb[0].bit[3] = bt[a].bit[5];

tb[0].bit[4] = bt[a].bit[6];

tb[0].bit[5] = bt[a].bit[7];

tb[0].bit[6] = bt.bit[2];

tb[0].bit[7] = bt.bit[3];

tb[1].bit[0] = bt.bit[4];

tb[1].bit[1] = bt.bit[5];

tb[1].bit[2] = bt.bit[6];

tb[1].bit[3] = bt.bit[7];

tb[1].bit[4] = bt[c].bit[2];

tb[1].bit[5] = bt[c].bit[3];

tb[1].bit[6] = bt[c].bit[4];

tb[1].bit[7] = bt[c].bit[5];

tb[2].bit[0] = bt[c].bit[6];

tb[2].bit[1] = bt[c].bit[7];

tb[2].bit[2] = bt[d].bit[2];

tb[2].bit[3] = bt[d].bit[3];

tb[2].bit[4] = bt[d].bit[4];

tb[2].bit[5] = bt[d].bit[5];

tb[2].bit[6] = bt[d].bit[6];

tb[2].bit[7] = bt[d].bit[7];

a = 0;

for(r=0;r<3;r++)

for(j=0;j<256;j++)

{

a = 0;

for(k=0;k<8;k++)

if(tb[r].bit[k] != bt[j].bit[k])a=1;

if(a == 0)

{

fprintf(f2,"%c",j);

}

}

}

fclose(f2);

fclose(f1);

}

return 0;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

habe den Code soweit auch zum laufen gebracht....er ist leider nicht ganz das was ich gesucht habe, da das Programm zum Encodieren und Decodieren ausgelegt ist und nicht zum Erzeugen von Seriennummern.:(

Trotzdem danke, ich werd jetzt mal gucken ob ich den Code zumindest in Teilen oder Modifiziert anwenden kann.:cool:

Falls doch noch jemand irgendwelche interessantie infos hat, ich bin für alles offen:D :WD :OD

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also es ist so: Durch diese Funktion soll eine Seriennummer erzeugt werden. Diese soll abhängig sein von verschiedenen Parametern.......diese Seriennummer geben wir den kunden, wenn er sich das Programm kauft. Wenn dann das Programm auf den PDA aufgespielt wird, muss er diese Seriennummer eingeben, diese wird dann durch eine Routine von uns gegengechekt wenn ok = Programm läuft!

Serienummer unterschiedlich = Programm wird sofort beendent...

Da wir verschiedene spezifische Parameter eines jeden PDA's einbauen, soll so verhindert werden, das die software nicht einfach auf einen zweiten PDA aufgespielt werden kann

Es soll also praktisch als ein art kopierschutz funktionieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das heisst aber auch, dass Der Kunde Euch bevor er die Seriennummer erhaelt kontaktieren muss, um sich zu registrieren und dabei einige Daten des PDAs von Euch abgefragt werden, die mit in die Seriennummer einfliessen? Ihr solltet dabei unbedingt bedenken, dass die "feste Kennung" von Windows CE nicht so fest ist, wie sie es gerne waere, da sie bei jedem Reset (wie er beispielsweise bei iPAQs gerne auftritt wenn diese zu lange ohne Strom sind) neu generiert wird.

Nic

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...