Saturday, June 17, 2006

FoxHunter




一个KillQQ的衍生物,用来查看Foxmail的密码,如果哪位同学忘记了Foxmail里面保存的邮箱密码可以用它来查看。没什么新鲜得咚咚,就是拷贝了KillQQ的一些代码过来。



下载



另记:Linux下修改密码的命令是passwd



//***************************************************************


//函数:

// DecryptFoxmail

// 解密Foxmail的服务器密码

//参数:

// pwd 密文,pwdDecrypted 明文

//返回:

// 是否成功

//***************************************************************


bool FoxHunterCore::DecryptFoxmail(LPCSTR pwd, LPSTR
pwdDecrypted)

{

*pwdDecrypted=0;



int iPwdLen = strlen(pwd); //密文长度

int iPwdLen1 = iPwdLen / 2 -1; //明文长度

if( iPwdLen > MAX_PATH )

{

return false;

}

BYTE Key = 0x5A;

BYTE A[8]={0x7E,0x64,0x72,0x61,0x47,0x6F,0x6E,0x7E};



BYTE B[MAX_PATH]={0};

BYTE C[MAX_PATH]={0};

BYTE D[MAX_PATH]={0};

//使用传入的字符串初始化数组B,同时检查字符


char ch=0;

BYTE higherByte;

int iCounter=0;

while( ( ch = *(pwd+iCounter) )!= 0)

{

if(47<ch && ch<58) //小于A

{

if( iCounter % 2 ==0 ) //高位

{

higherByte = ch - 48;

}

else //低位

{

B[iCounter/2]=(higherByte<<4) | (ch - 48);

}

}

else if(64<ch && ch<71) //A--F

{

if( iCounter % 2 ==0 ) //高位

{

higherByte = ch - 55;

}

else //低位

{

B[iCounter/2]=(higherByte<<4) | (ch - 55);

}

}

else

{

return false;

}

iCounter++;

}

//循环计数器

int i;

//生成数组 C

C[0] = B[0] ^ Key;

for(i=1; i < iPwdLen1 ;i++)

{

C[i] = B[i];

}

//生成数组 D

for( i=0; i < iPwdLen1 ;i++)

{

D[i] = B[i+1] ^ A[i % 8];

}

//生成明文

for( i=0; i < iPwdLen1 ;i++)

{

if(D[i] < C[i] )

{

pwdDecrypted[i] = 0xFF + D[i] - C[i];

}

else

{

pwdDecrypted[i] = D[i] - C[i];

}

}

pwdDecrypted[iPwdLen1]=0;



return true;



}









0 Comments:

Post a Comment

<< Home