分页 -00- -01- -02- -03- -04- -05- -06- -07- -08- -09- -10- -11- -12- -13- -14- -15- -16- -17- -18- -19- 分页
更新:2004-12-22 09:35:50  来源:smth 点击:329 分类:学术 http//liuguangjian.net
解析QQ2004的本地加密技术
发信人: kingpaul (劫机男孩), 信区: NewSoftware
标 题: 解析QQ2004的本地加密技术zz
发信站: BBS 水木清华站 (Tue Dec 21 22:22:02 2004), 站内

呼唤高手写破解程序啊

发信人: superroc (瀚海黑帮::阿喀琉斯::踵), 信区: Software
标 题: 解析QQ2004的本地加密技术zz
发信站: 瀚海星云 (2004年12月21日11:22:02 星期二), 站内信件

解析QQ2004的本地加密技术





 [文章信息]

作者: 冲出宇宙
时间: 2004-12-20
出处: 26u.com
责任编辑: 原野

[文章导读]

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


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

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

  一:密码文件结构

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

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

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

  一点补充:

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

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

--
http://img21.photo.163.com/zhangpg007/5376562/86848159.gif
※ 来源:·瀚海星云 bbs.ustc.edu.cn·                                          


--
中国是个大国,居住的都是中国人。


※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.38.75.*]
Early:
  波导收购西门子手机业务几成定局?(126) 2004年12月20日
  几种音乐中去人声的方法(406) 2004年12月16日

Later:
  文化错位、性自虐与王晋康科幻小说的深层解码(810) 2004年12月22日
  广州半年生活小记(121) 2004年12月23日
  配置手记.Win2003.IPV6.Tunnel(319) 2004年12月23日

点击这里给我发消息 收集整理:Swds - Http://liuguangjian.net
分页 -00- -01- -02- -03- -04- -05- -06- -07- -08- -09- -10- -11- -12- -13- -14- -15- -16- -17- -18- -19- 分页