Lavande_c 发表于 2010-4-23 12:58:45

有没有哪位童鞋了解EVA的eva.sys文件的结构

密码忘了,保存在本地的
本来以为能crack出密码,后来发现按照我理解的方法来穷举,不对
特地申请了一个QQ号码,按照两次md5的算法加密QQ密码,算出来的和eva.sys里面的根本不一样。。
我申请的这个,密码是shiyan
按照我的理解大概是这样: http://forum.ubuntu.org.cn/download/file.php?id=100947&mode=view/2010-04-22-184734_801x586_scrot.png



看图里面(保存了三个号码,我把前两个的信息抹掉了)
前八位473080EB,从16进制转到10进制刚好是QQ号码
剩下的2e6882552ed091e3910dc22cfd9a5bb8这一串是QQ密码经过两次md5后得到的串值
但是
fox@fox-laptop:~$ echo -n shiyan | md5sum
62239170f1f58f300b1478f0b5dcc64e-
fox@fox-laptop:~$ echo -n 62239170f1f58f300b1478f0b5dcc64e | md5sum
7cbe92b9e431ad93dd72d58766dba0c3-
根本就不对。。。我试过把第一次的md5值里面的字母换成大写的,再算第二次,发现也不对
到底应该怎样算呢?

bancage 发表于 2010-4-23 15:40:57

不懂 等高人指点 嘻嘻

sejishikong 发表于 2010-4-24 19:23:12

看代码吧。

Lavande_c 发表于 2010-4-25 00:17:04

不太懂C++,看了将近10个小时的EVA代码,没整明白。。纠结死了啊
void EvaLoginWindow::slotPasswordChanged( const QString &newPwd)
{
        if(newPwd.isEmpty()) return;
        int pwdLen = strlen(newPwd.ascii());
        char *pwd = new char;
        memcpy(pwd, newPwd.ascii(), pwdLen);
        pwd=0x00;
        memcpy(md5Pwd, EvaUtil::doMd5Md5(pwd, pwdLen), 16);       
        delete pwd;
}
char EvaUtil::md5Buf;

char *EvaUtil::doMd5(char *in, int len)
{
        md5_state_t ctx;
        md5_init(&ctx);
        md5_append(&ctx, (md5_byte_t *)in, len);
        md5_finish(&ctx, (md5_byte_t *)md5Buf);
        return md5Buf;
}

char *EvaUtil::doMd5Md5(char *in, int len)
{
        doMd5(in, len);
        doMd5(md5Buf, KEY_LENGTH);
        return md5Buf;
}
还有个是md5.c,好像是L. Peter Deutsch写的那个版本
老大能不能帮忙看看啊

yunfan 发表于 2010-5-6 09:29:35

我记得是2次md5, 第二次是第一次算出来的结果的那个16字节的buffer作为输入,而不是
看到的显示出来的字符串作为输入。

不过你即便弄出来,也用处不大,因为根本反算不回去,md5就是单向的。
页: [1]
查看完整版本: 有没有哪位童鞋了解EVA的eva.sys文件的结构