注册
登录
论坛
搜索
社区银行
帮助
导航
私人消息 (0)
公共消息 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
黑色海岸线论坛
»
网络安全
» [转贴] 深入解析 QQ2004版的本地加密技术
返回列表
发帖
abmark
该用户已被删除
楼主
跳转到
»
正序看帖
打印
字体大小:
t
T
abmark
发表于 2004-12-24 06:06
|
只看该作者
[转贴] 深入解析 QQ2004版的本地加密技术
我的本意是写个暴力破解QQ本地密码的程序,不过分析之后才发现,QQ密码循环加密了n(n>60000)次。虽然程序还是能写出来,不过可能需要很长时间才能算出一个短密码,所以并没有什么价值。唉!回去再看看自己写的MD5算法,看看什么地方可以大幅度改进的。再不行的话,就看看能不能写成万台机器联机的形式,这个可能需要从解密算法上入了。 下面说明QQ本地文件加密的问题。QQ本地密码文件保存在文件ewh.db中,加密方式是MD5和简单位变换的结合。 一、密码文件结构 密码文件结构可以表示如下: struct file_ewh.db { FileHeader *header; file://文件头 FileBlock *blocks; file://文件块数组 } 文件的图形结构如下: ___________________________________ 文件头 文件块一 文件块二 ....... ----------------------------------- 下面我们就分别分析文件头和文件块的结构。 1.文件头。 文件头共6字节,第一字节固定为51('Q'),第二字节固定为44('D'),第三、四字节都为01。第5个字节开始的16位数据表示文件块的个数。 2.文件块。 文件块的结构如下: struct FileBlock { int8 type; file://块的类型(QQ里面只使用了4和7两种) int16 nameLen; file://块名字的长度 int8 name[nameLen];//块的名字 int32 dataLen; file://块数据长度 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
=(!m
)^al;//al在这里指的是密码块数据的长度 file://上面的文件中al=10h; } 后记,QQ的加密算法和加密文件其实就这么简单。由于笔者第一次实际分析程序(以前只有理论水平),所以,花了3到4天才分析清楚,分析的汇编函数可能有30-40多个吧,反正写的笔记都有20多页了(A4的纸张),还打印了16张代码。 另外,数据块的名字也是加密过的(算法类上),上面的例子中的3个块的名字分别为:"AST"、"EWH"和"UIN"。其实我还分析出了一些QQ的内存里面类的结构,只是没有什么大用处,但我还是明白了加深类的层次将给解密者带来极大的痛苦(QQ文件在内存中表示的有4层指针)。 一点补充: 常常有人问怎么离线看本地电脑的聊天纪录。 其实很简单,把你QQ密码文件的最后4字节修改成别人的QQ号码,然后,拷贝这个文件到别人的号码的目录下覆盖它的密码文件就可以了。当然了,登陆的密码就是你自己的QQ密码了。所以在网吧等公共上网场所,离开时一定记得删掉自己的号码目录。
收藏
分享
superay
该用户已被删除
5
楼
superay
发表于 2005-3-14 18:52
|
只看该作者
[转贴] 深入解析 QQ2004版的本地加密技术
我有一个比较低级的问题
就是哪个修改密码文件的最后4个字节
怎么改啊
知道的大哥答一下
非常感谢
TOP
发短消息
加为好友
魅影-橙
当前离线
Member
帖子
4
我的爱好
阅读权限
10
在线时间
1 小时
黑海舰队列兵
主题
0
积分
0
贝壳
0 个
注册时间
2007-2-5
最后登录
2007-8-28
地板
魅影-橙
发表于 2005-3-14 17:57
|
只看该作者
[转贴] 深入解析 QQ2004版的本地加密技术
好难懂啊
TOP
abmark
该用户已被删除
板凳
abmark
发表于 2004-12-25 22:19
|
只看该作者
[转贴] 深入解析 QQ2004版的本地加密技术
转贴 非原创~
TOP
返回列表
回复
发帖
使用交流
网络安全
网络技术
娱乐休闲
灌水乐园
文学天地
美图欣赏
网站办公
站务处理
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]