搜狐首页 - 新闻 - 体育 - 娱乐 - 财经 - IT - 汽车 - 房产 - 女人 - 短信 - 彩信 - 校友录 - 邮件 - 搜索 - BBS - 搜狗 
搜狐首页 >> 生活频道 >> 休闲情调 >> 休闲生活

休闲:解析QQ2004的本地加密技术

2005-04-10 23:34
页面功能 【我来说两句】【热点排行】【推荐】【字体: 】【打印】 【关闭

  我的本意是写个暴力破解QQ本地密码的程序,不过分析之后才发现,QQ密码循环加密了n(n>60000)次。虽然程序还是能写出来,不过可能需要很长时间才能算出一个短密码,所以并没有什么价值。唉!回去再看看自己写的MD5算法,看看什么地方可以大幅度改进的。再不行的话,就看看能不能写成万台机器联机的形式,这个可能需要从解密算法上入手了。

  下面说明QQ本地文件加密的问题。QQ本地密码文件保存在文件ewh.db中,加密方式是MD5和简单位变换的结合。

  一:密码文件结构。

  密码文件结构可以表示如下:

  struct file_ewh.db

  {

  FileHeader *header; //文件头

  FileBlock *blocks; //文件块数组

  }

  文件的图形结构如下:

  ___________________________________

   文件头 文件块一 文件块二 .......

  -----------------------------------

  下面我们就分别分析文件头和文件块的结构。

  1.文件头。

  文件头共6字节,第一字节固定为51('Q'),第二字节固定为44('D'),第三、四字节都为01。第5个字节开始的16位数据表示文件块的个数。

  2.文件块。

  文件块的结构如下:

  struct FileBlock

  {

  int8 type; //块的类型(QQ里面只使用了4和7两种)

  int16 nameLen; //块名字的长度

  int8 name[nameLen];//块的名字

  int32 dataLen; //块数据长度

  int8 data[dataLen];//块数据

  }

  为了方便,这里的int8代表一个字节,余者类推。

  实际例子:

  我自己的QQ的密码文件(不要破解我的啊!),其数据如下:

  00000000: 51 44 01 01 03 00 04 03 00 bd af a8 04 00 00 00

  00000010: c9 6a 09 00 07 03 00 b9 ab b4 10 00 00 00 0f c5

  00000020: e9 d4 31 15 2f 12 c4 1c 0a 46 95 90 db 98 04 03

  00000030: 00 a9 b5 b2 04 00 00 00 69 f4 aa 02

  总共60个字节。

  看的出来,文件中有3块,类型分别为4,7,4。后面要说的,7代表密码块。

  ewh.db密码文件的第3个文件块的数据内容是密码文件对应的QQ号码。就是最后的4个字节的内容。

  大家可以随便分析一下,看看文件结构是否符合。

  二:QQ的加密算法

  ewh.db里面保存了密码加密后的结果。其中,第一个数据块的数据是密码进行MD5加密的轮次,第二个数据块是加密后的结果。

  其加密过程简单的描述如下:

  1)设密码为m[],加密轮次为n;

  2)for(i=0;i//上面文件中的n=0x96ac9;

  {

  m=MD5(m);

  }

  3)for(i=0;i<16;i++)

  {

  m[i]=(!m[i])^al;//al在这里指的是密码块数据的长度

  //上面的文件中al=10h;

  }

  后记,QQ的加密算法和加密文件其实就这么简单。由于笔者第一次实际分析程序(以前只有理论水平),所以,花了3到4天才分析清楚,分析的汇编函数可能有30-40多个吧,反正写的笔记都有20多页了(A4的纸张),还打印了16张代码。

  另外,数据块的名字也是加密过的(算法类上),上面的例子中的3个块的名字分别为:"AST"、"EWH"和"UIN"。其实我还分析出了一些QQ的内存里面类的结构,只是没有什么大用处,但我还是明白了加深类的层次将给解密者带来极大的痛苦(QQ文件在内存中表示的有4层指针)。

  一点补充:

  常常有人问怎么离线看本地电脑的聊天纪录。

  其实很简单,把你QQ密码文件的最后4字节修改成别人的QQ号码,然后,拷贝这个文件到别人的号码的目录下覆盖它的密码文件就可以了。当然了,登陆的密码就是你自己的QQ密码了。

  (这种方式想必没有杀毒软件检查的出来吧?想起上次一个网友修改QQ来看本地聊天纪录,结果被杀毒软件认为是QQ病毒!郁闷死了!)

  编辑:燕子 



页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭

爱宠靓照 秀出宝贝风采


ChinaRen - 繁体版 - 搜狐招聘 - 网站登录 - 帮助中心 - 设置首页 - 广告服务 - 联系方式 - 保护隐私权 - About SOHU - 公司介绍
Copyright © 2005 Sohu.com Inc. All rights reserved. 搜狐公司 版权所有
相关连接
  • 休闲:“QQ叛徒”病毒的查杀方法(04/10 23:31)
  • 休闲:QQ被盗的原因及防范手段(04/10 23:28)
  • 休闲:QQ病毒专杀工具XP(04/10 23:25)
  • 休闲:网上常用表情符号(04/10 23:18)
  • 休闲:办公室恋情成功十大法宝(04/10 23:17)
  • 休闲:QQ情话之男生的谎言(04/10 23:14)
  • 休闲:QQ情话之女孩的双关(04/10 23:11)
  • 休闲:QQ网恋辛苦也糊涂(04/10 22:58)
  • 休闲:MSN侦察兵v1.2下载(04/10 14:44)
  • 休闲:QQ聊天中的几种笑法(04/10 14:26)

  • 请发表您的看法
    用户: 匿名发出
    您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。
    留言:
    *经营许可证编号:京ICP00000008号
    *遵守《互联网电子公告服务管理规定》
    *遵守《全国人大常委会关于维护互联网安全的规定》



    搜狐商城
    ·家居|蚕丝被28折促销
    ·家居|笔记本电脑桌79
    ·时尚|非常小器指甲剪
    ·电器|净化器全线降价
    ·日用|毛衣毛球修剪器
    ·化妆|轻松塑身秘方
    更多...