QQ聊天记录的存储格式

最近有空………

想把MsgEx.db解密来研究一下……

这里说一下它的存储格式吧……

1 19 ''
2 21 ''
3 48 '0'
4 65 'A'
5 48 '0'
6 48 '0'
7 48 '0'
8 48 '0'
9 70 'F'
10 70 'F'
11 48 '0'
12 48 '0'
13 56 '8'
14 54 '6'
15 48 '0'
16 50 '2'
17 23435 '宋'
18 20307 '体'
19 13 '/r'

当年解密随便一条聊天记录,它都会以类似上面的字串作为终结。

其实这串字符是记录文字的格式。

1 19 ''
2 21 ''

据我推测,是起始的标记。

3 48 '0'
4 65 'A'

这2个字段比较特别,对于(3)来说,其实是1个16进制数,即二进制的 0000

其中,

第1个 0 代表 是否 粗体

第2个 0 代表 是否 倾斜

第3个 0 代表 是否 下划线

第4个 0 ,与下一个字有关,

对于(4),它是代表字体大小,当字体大小超过16时(包含16),用1个16进制数无法表示。

这时候,将第4个0会被标记为1,然后字体大小被表示为16+(4)的值

即不是粗体,不倾斜,没有下划线的 18号大小的字,会表示如下:

3 49 '1'
4 50 '2'

 

5 48 '0'
6 48 '0'
7 48 '0'
8 48 '0'
9 70 'F'
10 70 'F'

则代表字体的颜色……

剩下的

11 48 '0'
12 48 '0'
13 56 '8'
14 54 '6'
15 48 '0'
16 50 '2'

估计是字的编码……具体我也没了解……

接着就是

17 23435 '宋'
18 20307 '体'

代表字体的名称

最后的

19 13 '/r'

其实是代表值 13 ,也就是 (3)-(10) 和 (17)-(19) 的字节数(汉字是2个byte的)的数量……

 

P.S. : 以上都是我自己观察研究得出的……可能有错……请大家指教……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章