0元DIY导出(安卓非root)微信聊天记录到csv
__陈德龙__
2020年12月30日 17:52

开篇先diss——

  1. 辣鸡微信:不给导出聊天记录的接口

  2. 辣鸡CSDN:天价下载费

  3. 辣鸡【楼月微信聊天记录导出恢复助手】、辣鸡【微信备份助手】:打着免费的旗号到处发软件教程,骗下载安装之后收钱(~200元会员费)

辣鸡软件,不要下载!不要下载!不要下载!

摘要:本文提供一种低成本导出(安卓手机)微信聊天记录到csv的解决方案,若安卓机未root需10元,若已root则需0元。同时,本文提供包括无需手动编译的sqlcipher.exe v2.1在内的所有所需软件工具的下载。本文的方法为:首先提取聊天记录数据库EnMicroMsg.db,之后使用sqlcipher对数据库进行解密,并将库中的message表导出csv。


一、获取EnMicroMsg.db

EnMicroMsg.db是存储在安卓手机内部存储(非root无法直接访问)微信应用中的加密数据库,应为 Encrypted Micro Massage 的缩写。对于开启root后的手机,其位置位于:

/data/data/com.tencent.mm/MicroMsg/最长那个目录名/EnMicroMsg.db

对于未root用户,可通过安卓虚拟机获取EnMicroMsg.db。后续数据库解密需要虚拟机IMEI,而在VMOS pro中需花费10元开vip才可以查看IMEI(乞丐版看不了)。具体流程为:

  1. 备份真机聊天记录至电脑

  2. 开虚拟机,虚拟机中安装微信并恢复聊天记录

  3. 虚拟机开root,导出EnMicroMsg.db

二、计算数据库密码

数据库密码由手机设备IMEI、微信用户id uin,通过MD5加密而成。

  • IMEI:root用户直接使用真机IMEI,多个IMEI的话就尝试多次

  • uin:打开/data/data/com.tencent.mm/MicroMsg/shared_prefs/system_config_prefs.xml,文件内容如下:

<?xml version="1.0&#​34; encoding="UTF-8&#​34; standalone="true&#​34;?> -<map> <boolean value="true&#​34; name="set_service&#​34;/> <boolean value="false&#​34; name="first_launch_weixin&#​34;/> <string name="builtin_short_ips&#​34;>...</string> <int value="1234567890" name=&#​34;default_uin"/> <int value="2&#​34; name="launch_last_status&#​34;/> <string name="support.weixin.qq.com&#​34;>support.weixin.qq.com</string> <int value="-1&#​34; name="appbrand_video_player&#​34;/> <boolean value="false&#​34; name="settings_fully_exit&#​34;/> </map>

其中,1234567890即为uin。

获取IMEI与uin后,在https://md5jiami.bmcx.com/中生成数据库密码。

具体地,要加密的字符串为IMEI+uin,例如IMEI为863676041234567,uin为1234567890,则要加密的字符串为8636760412345671234567890。点击加密后,输出结果的前7为即为数据库密码。

三、打开EnMicroMsg.db

该数据库由sqlcipher v2.1加密。sqlcipher官网为https://www.zetetic.net/sqlcipher/,社区版不要钱,需要手动编译。商业版很贵,但不需要编译。

这里直接给出编译好的版本,不要钱!(辣鸡CSDN)

链接:https://pan.baidu.com/s/1PTjaWjUm6Vzw8OqyL1bZiA

提取码:long

打开sqlcipher2.1.exe,输入上一步得到的密码,打开数据库。若有多个IMEI,则尝试多个密码。

打开后,message表里面就是聊天记录。表中一行为一条消息,createTime字段是发送消息的unix时间戳,talker字段是对话对象的微信id,isSend字段表示该条消息是否是本方发送的。sqlcipher可以直接将表导出至csv。导出后,unix时间戳字段可以通过以下公式转换为excel中的日期时间:

=TEXT((AD1/1000+8*3600)/86400+70*365+19,"yyyy/mm/dd hh:mm:ss&#​34;)

完。