【个人开发】通过SQLite获取微信聊天记录

1. 背景

本想初始化mac,但是看到微信所占内存很大,想必都是聊天记录吧。从几年前一直想提取微信聊天记录,但整不出来,再试一次。

2. 写在前面

之前都知道微信聊天记录备份的数据在本地的db文件里,但是一直访问不了db文件,今天拜读了简书上大佬的文章,有点醍醐灌顶,原因是db文件的访问需要密钥。再一次尝试,竟然成了。

先上效果:
在这里插入图片描述
数据成功读取,后面python啥的,都好处理了。

3. 步骤

3.0 前置步骤

1、电脑:Mac
2、微信db文件路径:~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/
说明:该文件夹下有一些类似于365e4ad4v3fede5b5df0b30e1b083bc1d的文件夹,每个微信对应一个文件夹。消息位于文件夹下面的Message子文件夹。msg_0.db就是我们的微信聊天记录。
在这里插入图片描述

3.1 获取文件密码

因为db文件进行了加密,所以之前访问一直没能访问到。

3.1.1 确保电脑 SIP 的开启状态

1、终端输入下面命令。

csrutil status

结果如下。如果为enable,则需要关闭。如果为disable则跳过此步骤。
在这里插入图片描述
2、关闭操作。
a.重启,并在开机的时候长按 Command 和 R
b.进入系统恢复状态
c.点击屏幕顶部工具栏上的 实用工具,选择终端
d.在终端中输入 csrutil disable 回车,会出现下述字符串,再次重启生效

Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.

3、检查,如下则说明没问题。
在这里插入图片描述

3.1.2 获取密钥

步骤如下:

  1. 打开电脑端微信(不要登陆)
  2. 在Terminal输入命令lldb -p $(pgrep WeChat)
  3. 输入br set -n sqlite3_key,回车
  4. 输入c,回车
  5. 手机扫码登陆电脑端微信
  6. 这时候电脑端微信是会卡在登陆界面的,不需要担心,回到Terminal
  7. 输入memory read --size 1 --format x --count 32 $rsi,回车就可以获取到了密钥

中间可能需要一些确认,让你输入「y/n」之类,按照理解输入即可。最后输出结果为:

0x6000003624e0: 0x54 0x60 0x97 0x05 0xb5 0x09 0x43 0x9f
0x6000003624e2: 0x94 0xe8 0x38 0x09 0xdc 0x5e 0x79 0x53
0x6000003624f0: 0x94 0xe8 0x38 0x09 0xdc 0x5e 0x79 0x53
0x6000003624f8: 0x9a 0xa6 0x97 0x05 0xb5 0x09 0x43 0x9f

忽略左边的地址( 0x6000003624e0: ,0x6000003624e2:),从左到右,从上到下,把形如 0xab 0xcd 的数据拼起来,然后去掉所有的 "0x"和空格、换行, 得到 64 个字符的字符串,这就是微信数据库的 key。

比如:上述的结果为:54609705b509439f94e83809dc5e795394e83809dc5e79539aa69705b509439f

3.1.3 访问数据

1、目前使用的是DB Browser for SQLite,下载地址如下:DB Browser For SQLite
2、打开软件,链接db文件。这里两个点需要注意:
a、选择原始密钥
b、选择SQLCipher 3默认
c、填入密码,需要先手动输入0x,再将我们上面的54609705b509439f94e83809dc5e795394e83809dc5e79539aa69705b509439f复制进去。
否则,粘贴不了。
在这里插入图片描述
4、输入密码后,粘贴就完成数据库连接啦,后面就可以再IDEA中查看数据了。

以上,over,感谢两位大佬的文章。获益匪浅,后面关于python的尝试,下次再搞。

参考文章:
关于微信数据库的解密以及取证
Python - 获取微信聊天记录

  • 2
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值