QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4169|回复: 4

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

[复制链接]
发表于 2010-4-23 12:58:45 | 显示全部楼层 |阅读模式
密码忘了,保存在本地的
本来以为能crack出密码,后来发现按照我理解的方法来穷举,不对
特地申请了一个QQ号码,按照两次md5的算法加密QQ密码,算出来的和eva.sys里面的根本不一样。。
我申请的这个,密码是shiyan
按照我的理解大概是这样:



看图里面(保存了三个号码,我把前两个的信息抹掉了)
前八位473080EB,从16进制转到10进制刚好是QQ号码
剩下的2e6882552ed091e3910dc22cfd9a5bb8这一串是QQ密码经过两次md5后得到的串值
但是
  1. fox@fox-laptop:~$ echo -n shiyan | md5sum
  2. 62239170f1f58f300b1478f0b5dcc64e  -
  3. fox@fox-laptop:~$ echo -n 62239170f1f58f300b1478f0b5dcc64e | md5sum
  4. 7cbe92b9e431ad93dd72d58766dba0c3  -
复制代码

根本就不对。。。我试过把第一次的md5值里面的字母换成大写的,再算第二次,发现也不对
到底应该怎样算呢?
发表于 2010-4-23 15:40:57 | 显示全部楼层
不懂 等高人指点 嘻嘻
回复

使用道具 举报

发表于 2010-4-24 19:23:12 | 显示全部楼层
看代码吧。
回复

使用道具 举报

 楼主| 发表于 2010-4-25 00:17:04 | 显示全部楼层
不太懂C++,看了将近10个小时的EVA代码,没整明白。。纠结死了啊
  1. void EvaLoginWindow::slotPasswordChanged( const QString &newPwd)
  2. {
  3.         if(newPwd.isEmpty()) return;
  4.         int pwdLen = strlen(newPwd.ascii());
  5.         char *pwd = new char[pwdLen+1];
  6.         memcpy(pwd, newPwd.ascii(), pwdLen);
  7.         pwd[pwdLen]=0x00;
  8.         memcpy(md5Pwd, EvaUtil::doMd5Md5(pwd, pwdLen), 16);       
  9.         delete pwd;
  10. }
复制代码
  1. char EvaUtil::md5Buf[KEY_LENGTH];

  2. char *EvaUtil::doMd5(char *in, int len)
  3. {
  4.         md5_state_t ctx;
  5.         md5_init(&ctx);
  6.         md5_append(&ctx, (md5_byte_t *)in, len);
  7.         md5_finish(&ctx, (md5_byte_t *)md5Buf);
  8.         return md5Buf;
  9. }

  10. char *EvaUtil::doMd5Md5(char *in, int len)
  11. {
  12.         doMd5(in, len);
  13.         doMd5(md5Buf, KEY_LENGTH);
  14.         return md5Buf;
  15. }
复制代码

还有个是md5.c,好像是L. Peter Deutsch写的那个版本
老大能不能帮忙看看啊
回复

使用道具 举报

发表于 2010-5-6 09:29:35 | 显示全部楼层
我记得是2次md5, 第二次是第一次算出来的结果的那个16字节的buffer作为输入,而不是
看到的显示出来的字符串作为输入。

不过你即便弄出来,也用处不大,因为根本反算不回去,md5就是单向的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-25 07:02 , Processed in 0.083026 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表