导出微信聊天记录
在MAC上导出微信聊天记录。
文件位置
这个方法是直接导出MAC端微信的聊天记录,微信保存数据使用的是sqlite
,因此要获得.db文件。
1.获得聊天记录数据库文件
路径:/Users/li/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/xxx/Message
2.获得联系人的数据库文件
路径:/Users/li/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/xxx/Contact/wccontact_new2.db
3.群的数据库文件
路径:/Users/li/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/xxx/Group/group_new.db
数据库密码
微信对db文件都加密过了,所以我们要先取得数据库的密码。
- Mac上打开微信,但是不要登录
lldb -p $(pgrep WeChat)
,这一步需要关闭mac的sipbr set -n sqlite3_key
,回车c
,回车- 登录微信
memory read --size 1 --format x --count 32 $rsi
,回得到类似下图的输出
|
|
- 通过python脚本解密
|
|
- 得到的key就是数据库的密码
- 下载db工具,
https://sqlitebrowser.org/dl/
,使用密码打开。
数据格式
表名
Chat_{ID}
,这个ID使用联系人的wxid或者群聊id,计算md5之后得到的。
聊天数据
每一个Table代表你与一个人/群的聊天记录。
- mesLocalID:primary key,
- mesMesSvrID:服务端消息ID,
- msgCreateTime:消息创建时间(Unix time)
- msgContent:消息内容(格式为普通文本或XML)
- msgStatus:消息状态(3表示发送出去的消息,4表示收到的消息)。
- msgImgStatus:图片状态
- messgaeType:消息类型(1表示普通文本,3表示图片,34表示语音,43表示视频,47表示表情包,48表示位置,49是分享消息)
- msgSource:消息来源(仅针对收到的消息)
msgContent:
3表示发送出去的消息,4表示收到的消息。 目前还有个2,但是测试下来,也是自己发送出去的消息。
messgaeType
1, 3, 43, 47, 48, 49, 10000。 10000:修改群聊名称,撤回消息这些。