BlackFeather'S Blog

首页 | |

QQ和微信聊天内容读取解密

 

 

测试平台:安卓4.1 & 2.3

测试软件:手机QQ2012 & 手机QQ2013 & 微信4.5 to 微信5.2

测试目的:获取聊天记录

 

1.手机QQ

据说手机QQ2012之前都是明文的,这个没测试,不细说了,有兴趣的朋友自己搜索下。2012之后使用记录保存的sqliteDB内容加密,库没有设置密码,直接用sqliteadmin之类的软件打开之后可以看到一堆歪七扭八的字符。

2013的最新版本的手机QQ数据库的表名调整为:mr_friend_MD5(QQ)_New ,比原来的多了一个_New。这里先讲解一下utf8编码,utf8的中文是3字节,之前的算法根据代码可以看出来,前两字节原封不对,只对最后一个字节进行异或。新版本的不在区分中文和英文,直接对每个字节进行疑惑加密。

使用了15位的手机串号作为key,依次做异或运算。。。这个尿性,就算没有手机串号也能碰撞出来的。。。这个加密算是形式吧。。。。

注意:从字段里读取内容的时候要使用sqlite3_column_blob函数获取内容缓冲区,使用sqlite3_column_bytes获取出来缓冲区长度,因为使用sqlite3_column_text会有\0字符干扰导致数据不全;所有的中文使用utf8编码,需要转下。

 

2.微信

微信貌似4.0之前也木有加密,没有测试,4.5版本以后使用了sqlite加密数据库,数据没有加密但是数据库文件加密了。

通过反编译逆向+调试,这个数据库的密码加密方式为MD5(手机串号+微信uin).substring(0,7),md5的字符均为小写。

例如我的串号为3535xxxxx....,uin为168150735,key为"2be3aa8"。

 

有了key,用sqlite数据库查看器打开即可看到内容。mssage表里是普通微信聊天的记录,qmessage是QQ离线消息的记录,其他的木有细看,测试基本结束。

 

 

更多疑问解答:http://fenlog.com/post/82.html

此方法有一定危害性,故代码不公开了,有需要联系本人。

 

 

2013/4/25 | Tags:微信,手机QQ,聊天内容,解密 | C/C++代码 | 查看评论(21)

相关文章:

Powered By Z-Blog  触屏版 | WAP版 | 电脑版