【个人开发】通过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 – 获取微信聊天记录

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/dbafe07b37.html