DBO Geschrieben 5. April 2002 Teilen Geschrieben 5. April 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kindergarten.de Geschrieben 7. April 2002 Teilen Geschrieben 7. April 2002 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; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DBO Geschrieben 8. April 2002 Autor Teilen Geschrieben 8. April 2002 werd ich gleich mal ausprobieren:D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DBO Geschrieben 8. April 2002 Autor Teilen Geschrieben 8. April 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T. Schiffler Geschrieben 8. April 2002 Teilen Geschrieben 8. April 2002 Hi Soll das Programm auf jedem PDA laufen oder nur für einen bestimmten PDA registriert werden ? Sollte es nach dem 2ten Schema verlaufen dann benutze doch die Palm-ID und mach irgend eine dumme Berechnung mit dieser ID Erbeere Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DBO Geschrieben 9. April 2002 Autor Teilen Geschrieben 9. April 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 9. April 2002 Teilen Geschrieben 9. April 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.