QQ空间代码免费提供qq空间留言代码,qq空间皮肤代码,QQ个性签名,qq空间模块,QQ头像,QQ表情,QQ技巧,免费QQ秀,QQ游戏攻略,QQ堂,QQ音速等
QQ空间,QQ空间代码,QQflash模

块,QQ空间最新代码,QQ空间皮肤代码. QQ个性签名,QQ繁体个性签名,QQ

空间个性签名,QQ经典个性签名. QQ技巧,QQ空间技巧,QQ使用技巧

,QQ聊天技巧. QQ表情,QQ表情下载,QQ搞笑表

情,QQ自定义表情,QQ表情图片. QQ头像,QQ个性头像,QQ自定义头像

,QQ情侣头像,QQ头像下载. QQ网,QQ下载,QQ空间,QQ表情,QQ空间代码,QQ头像,QQ个性签名,

腾讯QQ,QQ游戏,QQ直播,QQ2007. QQ空间模块,QQflash模块,QQ空

间大图模块,QQflash代码. QQ下载,QQ游戏下载,腾讯QQ下

载,QQ直播下载,QQ2007下载. QQ游戏,QQ游戏攻略,QQ游戏下

载,QQ游戏大厅,QQ游戏大厅下载. QQ安全,QQ安全中心,QQ黑客,QQ

防范. QQ新闻,QQ图片新闻,QQ体育新闻

,QQ娱乐新闻,QQ最新活动.
QQ空间代码 QQ个性签名 QQ技巧 QQ表情 QQ头像 QQ空间模块 QQ下载 QQ游戏 QQ安全 QQ活动
您当前的位置:QQ空间代码加油站 → 文章中心 → QQ技巧 → 文章内容 退出登录 用户管理
本类热门文章
相关下载
系统安全之QQ聊天记录文件存储方式解密
作者:佚名  来源:不详  发布时间:2007-5-22 18:13:52

减小字体 增大字体


1.聊天记录存储方式

QQ聊天记录保存在MsgEx.db文件中。以前很早的版本是保存在Msg.db中,文件结构也与现在不同,我们就不分析了。

MsgEx.db采用Storage结构化存储。关于Storage复合文档的知识请查阅Microsoft相关文档,我们不做赘述。

大家可以用VC自带的DocFile View工具查看该文件的内容,可以看到文件结构大致如下:


|----MsgEx.db
|    |----C2CMsg
|        |----QQ号

码
|            |----Data.msj
|            |----Index.msj
|    |----IMInfo
|        |----info.dat
|    |----Matrix
|        |----Matrix.db
|    |----SysMsg
|        |----10000
|            |----Data.msj
|            |----Index.msj
|    |----DiscMsg
|    |----GroupMsg
|    |----MobileMsg
|---------TempSessionMsg
 

消息内容都存储在每个号码下面的Data.msj中,通过Index.msj索引。消息内容是经过加密处理的,必须经过解密才能看到。

2.解密方法

消息内容采用BlowFish分组加密。每8个字节为一个分组。密钥Key通过QQ号码生成,具体算法稍后讨论。

解密方法:

a.取前8个字节,通过BlowFish解密, 得到decryptKey;

b.decryptKey与后面8个字节XOR,对结果再进行一次BlowFish解密;

c.将decryptKey与前8个字节XOR,得到第一组结果;

d.decryptKey与后面8个字节XOR,重复b,c两步;

e.最终全部数据解密完毕。

最后会剩下一组8字节无法解密,这个实际上是冗余数据,似乎是用来作为校验。

3.具体步骤

以上解密时,BlowFish的密钥是一个全局公用密钥Key。Key要通过QQ号码生成,具体步骤是:

a.将QQ号码进行MD5变换,得到Md5Key

b.取Matrix.db的数据,对其进行解码。简单说一下Matrix.db文件的结构:

Matrix.db采用分块存储,每个Record包含类型、名字长度、名字、内容长度、内容几个字段组成。用数据结构表示就是:


struct Record{
  char rType;
  short nLen;
  char Name[nLen];
  int rLen;
  char Content[rLen];
};
 

初始内容也是通过加密存储的。解密方法很简单:将长度的低位字节和高位字节XOR,得到key;将内容逐个与key进行XOR,就得到结果。对名字和内容分别进行解密即可。解密后会看到STL, TIP, CRK, CPH, CAH等字段,不清楚具体的啥含义,感兴趣的同学可以自己去研究研究。我们要用到的是CRK字段,长度为32字节(如果本地聊天记录加密,可能会有变化,没试过)。将得到的CRK字段作为pData。

c.用Md5Key对pData进行BlowFish解密,得到全局密钥Key

4.结论

以上讨论的都是本地聊天记录没有加密的情况。如果选择了加密,没有密码是肯定解不出来滴,大伙就不用费心了。

[] [返回上一页] [打 印]
文章评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: ! 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容: !

         (注“!”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -