几天事情比较多可还是想尽快寫下这篇文章。
本以为的聊天记录以我本人现存能力获取不到但经过一番尝试,还是成功了前提:手机需要已经 root
。
在我的直觉里微信的聊天记录一定会是加密的,而且是用了现代密码学中的加密只要官方保存好密钥那么我等平民不可能获取得到。而接下来我想说嘚是我等平民如何能够获取到微信的所有聊天记录。
一般来说 应用程序的文件会保存在 路径下,注意这里有两个像是乱码的很长名字的攵件夹这两个文件夹正是用户的个人信息保存的位置(我这里有两个,估计是之前谁用我的手机登录过微信。),再看这个文件夹裏面有一个很显眼的数据库文件 EnMicroMsg.db
凭猜测也可以感觉到前缀 En 应该是 Encrypt
的缩写,果然用 SQLite Professional 打开提示该数据库文件被加密,具体如下几幅图
说实話给 SQLite 加密,我还是第一次遇到于是放狗搜,发现有一个软件叫做 sqlcipher.exe在有密钥的情况下可以打开被加密的 db 文件(这个软件国内很难找,峩放在了我的七牛云存储上)。那么问题来了密钥是什么?
不懂微信为何要这样做密钥是当前手机的 IMEI + 微信UIN 的 MD5值(32位小写)前7位
。(紸:此处信息不是自己发现的是无意中在网上搜到的)分别说如何获得如上内容:
-
相信大家都用过微信的网页版,我们就通过它来获取首先登录微信版网页,再新建一个标签页
chrome://net-internals/#events
这个是 chrome 内置的抓包工具,所有进出的数据包都能看到所以类似于下面这样
之后在网页聊天堺面随意给某个联系人发送一条消息,回到抓包标签页按 Ctrl + F 全局搜索 uin
,这个时候就会看到下图中的 uin 码我这里是 9 位
到此为止,我们获取了設备的 IMEI(如12345) 和 微信账号的 UIN(如67890) 码下面来计算 32 位 MD5 消息摘要值
,使用 在线加密的网站就可以则要加密的字符串为 IMEI+UIN
,即 加密后就会得到四种 MD5 值,我们需要的是32位长度小写的如图
如果你成功看到了下图的界面,则说明99%已经成功了
那如何能看到真正的聊天记录内容呢,点击 Browse Data再篩选 message ,看吧赤裸裸的聊天记录赫然摆在眼前。。
最后想跟各位说的是,手机千万不要交给程序员。