---
# System prepended metadata

title: 输出为：0xabcdefabcdefabcdabcdefabcdefabcdabcdefabcdefabcdabcdefabcdefabcd
tags: [tech]

---

---
tags: tech
---
## 系统安全



#### MAC获取微信聊天记录

安全漏洞发现时间2019 Dec 3，网上查阅资料
- 材料：MAC电脑密码，当事人手机微信并扫码登录

MacOS版本的微信的聊天记录保存在如下路径中的数据库文件中：

~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat/*/*/Message/*.db
1
这些数据库文件都是 sqlcipher 数据库的文件，是加密过的，要解密并读取加密的数据库，可以按照本文的方法进行操作。

打开Mac版微信，但是不要登陆。

在命令行下输入命令 lldb -p $(pgrep WeChat) 后回车，会进入 lldb 的子shell界面。

在 lldb 子shell中输入命令 br set -n sqlite3_key ，回车。

再输入 c ，回车。

然后登陆Mac版微信。（此时，Mac版微信可能会暂时无响应，这不影响后续的操作）

在 lldb 子shell中输入命令 memory read --size 1 --format x --count 32 $rsi ，回车。之后，会输出类似如下的数据：

0x000000000000: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000008: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000010: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000018: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
1
2
3
4
用Python对上一步得到的数据进行处理，具体代码如下：

source = """
0x000000000000: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000008: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000010: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
0x000000000018: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd
"""
key = '0x' + ''.join(i.partition(':')[2].replace('0x', '').replace(' ', '') for i in source.split('\n')[1:5])
print(key)

# 输出为：0xabcdefabcdefabcdabcdefabcdefabcdabcdefabcdefabcdabcdefabcdefabcd
1
2
3
4
5
6
7
8
9
10
上面代码的主要作用是将先 source 中每一行中冒号 : 左边的字符去掉，再把剩余的字符中每段表示16进制数的字符的前导标识符 0x 去掉，再把得到的所有字符拼接在一起，得到一个64位的字符串，最后，在这个字符串之前添加十六进制的标识符 0x，得到一个表示16进制数的66位的字符串，这个字符串就是下一步要用到的保存微信聊天记录的数据库的 raw_key。

从 https://sqlitebrowser.org/ 下载Mac版本的 DB Browser for SQLite 并安装。

打开 DB Browser for SQLite ，在菜单栏选择 打开数据库 ，在弹出的对话框中选择一个保存Mac版微信聊天记录的数据库文件 *.db，然后在 SQLCipher加密 的界面中，将密码方式设为 Raw key，将 Encryption settings 选为 SQLCipher 3 defaults，在密码输入框中输入上上一步中得到的66位字符串，点击 OK 按钮。