Hi Leute,
ich hab da mal eine Frage zu Algorhitmen und zwar zu einem ganz bestimmten und zwar dem hier:
Nun meine Frage: ist es möglich diesen Algo zu lösen? Ich habe schon einen funktionierenden Key, aber kann ich mit Hilfe von diesem den Algorhitmus zurückverfolgen?
EDIT: Wer keine große Lust hat sich den Code groß anzuschauen: Im Endeffekt läuft es bei diesem Algorhitmus daraus hinaus das der Eingabestring mit 14 Buchstaben und Zahlen in eine Zahl umgerechnet wird und diese dann mit 1045951396 verglichen wird. Das Prinzip ist ähnlich einer Einwegverschlüssellung, deswegen habe ich ja bedenken, ob man es schafft dazu einen KeyGenerator zuschreiben.
Vielen Dank im voraus!
Gruß craven
ich hab da mal eine Frage zu Algorhitmen und zwar zu einem ganz bestimmten und zwar dem hier:
Code:
#include <iostream>
#include <windows.h>
using namespace std;
int main() {
//Algo funktioniert:
//unsigned char MyKey[15] = "QNUL0JCT71YZML";
unsigned char MyKey[15] = "ABCDEFGHJKLOKM"; //Klappt natürlich nicht
unsigned long int ABC[] = {'\x41','\x42','\x43','\x44','\x45','\x47','\x48','\x49','\x4A','\x4B','\x4C','\x4D','\x4E','\x4F','\x50','\x51','\x52','\x53','\x54','\x55','\x56','\x57','\x58','\x59','\x5A','\x30','\x31','\x32','\x33','\x35','\x37'};
unsigned long int sEDX=0, sESI=0, sECX=0, loop=0, loop2=0, loop3=0;
unsigned long int esi=0, eax=0, edi=0, esp=0, ecx=0;
for(loop2 = 0;loop2<14;loop2++) { //Jeder Buchstabe durchläuft eine Schleife
for(loop=0;loop<32;loop++) { //Zaehlt
if(MyKey[loop2]==ABC[loop])
break;
}
loop++;
for(loop3=0;loop3<5;loop3++){
//edi ist einzige beeinflußbare Variable
//ecx ist abhaengig von dem geraden durchlaufenen buchstaben und edi
edi = loop; //loop ist immer verdoppelt
loop = loop*2;
ecx = loop2; //ecx nimmt die Buchstaben schleife an
edi >>= 4;
edi &= 1;
edi <<= ecx;
if(loop3==0)
ecx = sEDX;
else if(loop3==1)
ecx = sESI;
else if(loop3==2)
ecx = sECX;
ecx |= edi;
if(loop3==0)
sEDX = ecx;
else if(loop3==1)
sESI = ecx;
else if(loop3==2)
sECX = ecx;
}
}
eax = loop3;
//Vorerst fertig
cout << sESI << " " << sEDX << " " << sECX << endl;
loop2 = sESI; //muss 16183 rauskommen
loop = sEDX; //muss 3989 rauskommen
eax = sECX; //muss 4358 rauskommen
loop2 &= 16383; //3FFFh 11111111111111b
cout << loop2 << " " << eax << endl;
loop <<= 14;
loop2 |= loop; //loop2 und loop werden aneinander gehaengt
cout << loop2 << " " << eax << endl;
eax >>= 10;
loop2 <<= 4; //100b
cout << loop2 << " " << eax << endl;
eax &= 15; //1111b
loop2 |= eax; // hier muss ne zahl mit nur 1 stehen
cout << loop2 << " " << eax << endl;
if(loop2==1045951396)
cout << "Valid Key" << endl;
else
cout << "Nein:" << loop2 << endl;
system("PAUSE");
return 0;
}
Nun meine Frage: ist es möglich diesen Algo zu lösen? Ich habe schon einen funktionierenden Key, aber kann ich mit Hilfe von diesem den Algorhitmus zurückverfolgen?
EDIT: Wer keine große Lust hat sich den Code groß anzuschauen: Im Endeffekt läuft es bei diesem Algorhitmus daraus hinaus das der Eingabestring mit 14 Buchstaben und Zahlen in eine Zahl umgerechnet wird und diese dann mit 1045951396 verglichen wird. Das Prinzip ist ähnlich einer Einwegverschlüssellung, deswegen habe ich ja bedenken, ob man es schafft dazu einen KeyGenerator zuschreiben.
Vielen Dank im voraus!
Gruß craven