L
helo
Da ich mit der Rekursiven Version nicht so zufrieden war wegen der Geschwindikeit .. schrieb ich meinen alten Code um..
Mehr Geschwindikeit durch weniger Funktionsaufrufe ..
Diese Version ist mit einem Thread pro breite Implem. ,doch das werde ich noch ändern.
unsigned char chartable[]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ "};
int main(){
..
...
for(f=0;(f<slen);f++) {
ThreadH[f] = CreateThread(NULL ,0 ,&THREAD ,(LPVOID) (f+1) ,0 ,&ThreadID[f]);
}
}
DWORD WINAPI THREAD(r)
{
BF_(r);
ExitThread(0);
}
int BF_(int width)
{
int r[15]={0};
register int i ,f ,d;
register int p=0;
for(r[0]=0;(r[0]<stab);r[0]++) {
for(r[1]=0;(r[1]<stab);r[1]++) {
for(r[2]=0;(r[2]<stab);r[2]++) {
for(r[3]=0;(r[3]<stab);r[3]++) {
for(r[4]=0;(r[4]<stab);r[4]++) {
for(r[5]=0;(r[5]<stab);r[5]++) {
for(r[6]=0;(r[6]<stab);r[6]++) {
for(r[7]=0;(r[7]<stab);r[7]++) {
for(r[8]=0;(r[8]<stab);r[8]++) {
for(r[9]=0;(r[9]<stab);r[9]++) {
for(r[10]=0;(r[10]<stab);r[10]++) {
for(r[11]=0;(r[11]<stab);r[11]++) {
for(r[12]=0;(r[12]<stab);r[12]++) {
for(r[13]=0;(r[13]<stab);r[13]++) {
for(r[14]=0;(r[14]<stab);r[14]++) {
for(f=0,d=14;(f<width);f++ ,d--){
tmpbuf[width-1][f] = chartable[r[d]];
}
tmpbuf[width-1][f]='\0';
(*HASH[modflag])(width-1);
if( ! memcmp(&hash_buf[0] ,&digesthex[width-1][0],SIZEH) ) {
_sleep(501);
TerminateThread(HStat,1);
printf("\n\nCracked Hash :%s - Password :%s\n\n" ,&output_hash[0] , &tmpbuf[width-1][0] );
for(i=0;i<15;i++) {
if(i!=(width-1)){
TerminateThread(ThreadH[i],0);
}
}
return 0;
}
count++;
}
if(width==1)
return 0;
}
if(width==2)
return 0;
}
if(width==3)
return 0;
}
if(width==4)
return 0;
}
if(width==5)
return 0;
}
if(width==6)
return 0;
}
if(width==7)
return 0;
}
if(width==8)
return 0;
}
if(width==9)
return 0;
}
if(width==10)
return 0;
}
if(width==11)
return 0;
}
if(width==12)
return 0;
}
if(width==13)
return 0;
}
if(width==14)
return 0;
}
return 0;
}
lowbyte