首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

微信聊天记录的导出

手机不行了,太多聊天记录了,搜索个聊天记录都能卡死。这也不怪手机,毕竟纯文字的数据库都有500+MB,放台式机select+order by一下都要100+s。

0.问题环境

华为Mate9,EMUI9(Android 9),无root。

安卓的聊天记录是存在/data/data/com.tencent.mm/MicroMsg/“)}/EnMircoMsg.db里面的,要做的就是导出这个文件并读取内容。

1.数据导出

网上的基本是root过的方法,没root的没法动。隐私数据要root权限的,不可能微信备份出来,再刷机root,再回复备份,再取出数据,太慢了,垃圾微信备份几个G的数据很慢。

Plan B是通过手机备份,这个有点bug的存在,通过各大厂商(其他厂商的都有这个问题)的系统备份可以把要root权限的数据都备份到其他地方。

问题来了,当我高高兴兴备份好到台式机上时候,一看备份文件是tar压缩文件,右键解压!

“压缩文件已损坏!”

然后使用Trid_Net检查一下文件类型,居然识别不出来什么。再对比下正常tar文件,确认是加密了的无疑。

2.从备份文件恢复微信数据

打开数据库看见只有三个表

apk_info

apk_file_info

apk_file_data

略略看表结构可以猜出来,文件信息是在apk_file_info里面的,包含了路径信息(file_path)和数据索引(data_index)。数据索引是apk_file_data里面的,每行数据最大储存8KB的二进制文件内容,通过索引和长度我们可以拼接出原来的文件。

C#代码上!

3.EnMicroMsg.db的读取

至此我们已经完整恢复了微信的文件,接下来是读取。

EnMicroMsg.db是一个加密的sqlite数据库,密码已经由网上各路大神逆向出来了,是md5(IMEI+uin)[0:7],这个就不赘述了,这些都可以通过Comp.cfg和cfg得到。而这些cfg文件都是java的HashMap的序列化文件,所以就……

Java代码上!

得到IMEI(事实上不一定是IMEI,反正就叫这个值为IMEI了)和uin可以轻易的算出来密码,通过sqlcipher(2.x)可以成功打开数据库了,可以弄个脱密的库,方便以后读取什么的。

4.聊天记录的恢复

聊天记录在message表里面,主要关注的是content,talker,isSend,type这几个字段

5.将来的工作

把它放到手机里面,弄个好看点的界面查询,那就完美了!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190216G0YGF800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券