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