论坛登陆 用户: 密码:
联系我们
设为首页
加入收藏
业界新闻 网络编程 程序开发 网页图象 聊天通讯 软件应用 网络安全 硬件学堂 教育频道 站长club
  ·推荐新闻
 
·美前任官员认为amd告倒英特
·搜索引擎关键字排行简介
·网站优化教程(一)
·msn近期遭受木马病毒骚扰 用
·用qq管理你的系统^_^ 
·测评中心金山毒霸联合发布7
·qq群聊实名 普通用户不受影
·雅虎思科联手推数字邮件签名
·这18条背下来没人敢和你忽悠
·自己动手,拯救丢失的硬盘数
  ·资料搜索
 
  ·相关文章
·出色的ghost工具软件
·getflash--下载、在线播放flas
·拒绝等待--快速开启adobe read
·用asb antispam轻松应对垃圾邮
·深入发掘智能abc的小秘密
·设置好flashget的存盘频率
·减少ghost镜像文件体积
·简单快捷实现asp在线发邮件功能
·如何方便地切换输入法
·感受炫彩:wmp10中文正式版火爆
  ·热门新闻

qq2004加密文件和加密算法分析


 日期:2005-7-18 14:18:23     来源:易特网络技术   编辑:黑鹰  点击:
我的本意是写个暴力破解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层指针)。

上一篇:qq密码被盗之谜1:本地破解的奥秘原理和方法
下一篇:滚动抓取整个网页图片
[发送给好友] [打印本页] [关闭窗口] [返回顶部转载请注明来源:http://www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 黑鹰 投稿作者: 易特网络
信息来源: 易特网络技术 录入时间: 2005-7-18 14:18:23
浏览次数: 投稿信箱: shtghy@163.com
设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights ©2004-2005 iyit.net all rights reserved. 网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息