潮州网 潮州网星空论坛 潮州博客   把潮州网:设为首页 加入收藏
潮州网,潮州招聘信息
资讯 | 奥运 | 女性 | 娱乐 | 明星 | 旅游 | QQ群 | 教育 | 视频 | 交友 | 健康 | 论坛 | 博客 | 工作
购物 | 购卡 | 财经 | 英语 | 基金 | 二手 | 小说 | 免费 | 彩铃 | 100e | 高考 | 成语 | 银饰 | 图片
剧情 | 电影 | 网址 | 全搜 | 公交 | 天气 | 杀毒 | 算命 | 爱墙 | 游戏 | 短信 | 黄页 | 英文 | 导航
在 @czyes.cn 中获取一个免费的电子邮件帐户
网上索取DHC免费试用装

圣诞节专题\圣诞节彩信
免费在线算命系统
推荐:使你上网远离木马程序、偷号软件 潮州网免费邮箱 愚人节整人全集
现在位置: 潮州网 > QQ乐园 > 文章中心 > QQ安全 > 正文
QQ2004加密文件和加密算法分析
QQ2004加密文件和加密算法分析

我的本意是写个暴力破解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代表密码块。

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

二: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层指针)。


来源:不详
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关)
QQ安全相关文章推荐
QQ安全重要提示
·在百度中搜索更多关于QQ安全:QQ2004加密文件和加密算法分析的内容
·在Google中搜索更多关于QQ安全:QQ2004加密文件和加密算法分析的内容
·欢迎你到关于QQ安全:QQ2004加密文件和加密算法分析和大家交流更多的问题
QQ安全特别推荐
QQ安全论坛新帖
处理 SSI 文件时出错
女人吧网站导航免费论文库站长家园游戏吧知识库潮州网免费邮
潮州生活信息港潮州市资讯网星空论坛潮州博客
关于我们 - 联系我们 - 意见投诉 - 网站地图 - 投稿信箱
Copyright© 2004-2005 CzYes.Cn Inc. All rights reserved
  粤ICP备05003710号