土办法导出 Mac 版微信聊天记录

2018 年 6 月 26 日
 5thcat

macOS 微信的“备份与恢复”功能只能从手机微信导出到 Mac, 但是微信其实又在本地存了加密的 sqlite3 数据库; 本地数据库的是一系列 *.db 文件,可以用如下命令查看,

ls -alh ~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat/*/*/Message/*.db

经过观察,微信存数据使用的是开源的 sqlcipher, 所以还是有办法导出微信在 Mac 本机的数据库的, 以下内容在 macOS 10.12, MAS 版微信 2.3.16 测试生效;

该方法依赖 lldb, 步骤如下

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
38005 次点击
所在节点    分享发现
30 条回复
AnyISalIn
2018 年 6 月 26 日
itunes 备份可以拿出明文数据
5thcat
2018 年 6 月 27 日
@AnyISalIn 误删手机微信的人可能有用
mornlight
2018 年 7 月 19 日
试了一下,还有个 wccontact db,里面是所有联系人,联系人的 m_nsUsrName 做一次 md5 后对应聊天记录 db 里以 Chat_xxx 开头的表。

终于可以把我一些有用的记录导出来了,谢谢~
Citrus
2018 年 8 月 19 日
@AnyISalIn 备份不是备份不了微信数据么?
AnyISalIn
2018 年 8 月 19 日
@Citrus 可以的
Citrus
2018 年 8 月 19 日
@AnyISalIn 要怎么查看?备份出来的都是 Hash 后的文件名吧。。。
AnyISalIn
2018 年 8 月 19 日
@Citrus itunes 全量备份(不加密)之后用 iphone backup extractor 单独导出 weixin 的目录,然后最里面有一个 MM.sqlite 文件,都是明文的数据
deniswu
2019 年 1 月 10 日
请问现在这个方法还能用吗,拿到密码后,页面大小选多少,我试了下得到的密码还是打不开。
devnkong
2019 年 3 月 17 日
2019.3.17 亲测可用,加密方法选择 SQLCipher 3 default
zhongdian121
2019 年 3 月 26 日
没有 lldb 的相关经验,请问
br set -n sqlite3_key 中的变量名 sqlite3_key 是怎么猜到的呢?
这个办法能够破解 msg_n.db
但是现在电脑端微信可以备份聊天记录到 Backup.db
在这个过程中,设置 sqlite3_key 断点依然能够触发,
memory read --size 1 --format x --count 32 $rsi 读到的数据跟登录时触发的断点也不相同
但是就是无法用相同的方法解密
newdongyuwei
2019 年 6 月 24 日
2019-06-24 亲测可用。赞楼主! Database Browser for SQLite 支持解密 sqlcipher 加密的数据库。Encryption setting 选择 sqlcipher3 defaults
newdongyuwei
2019 年 6 月 24 日
@zhongdian121 我猜测是这个: https://www.zetetic.net/sqlcipher/sqlcipher-api/#sqlite3_key sqlcipher 会调用 sqlite3_key 这个函数
taohao
2019 年 8 月 8 日
@zhongdian121 我也是这样,打开备份的数据时打不开
longalong
2019 年 9 月 6 日
求教,我在 mac 按照教程走,最后可以在 DB broswer for sql-lite 里边看到,我现在要把 mac 里的聊天记录转到 pc 上,“遗留问题:*.db 文件要在另一台 PC 或 Mac 上 登录微信, 才能被关闭,否则里面的聊天记录不是最新的;当然也可以强制调用 wal_checkpoint, 不过作为土办法,在另一台电脑上登一下微信也无妨” 没有太理解这里的操作步骤。是指直接把 mac 里的 DB 文件复制到 PC 上 DB 文件应该在的位子就可以了吗?还是怎么操作的
longalong
2019 年 9 月 6 日
zhangyccc
2020 年 2 月 12 日
已经不行了,第一步就连不上了 lldb -p $(pgrep WeChat)
nickr
2020 年 7 月 23 日
验证了. 这个方法还是可用的. 不过对于手机备份到 mac 的备份文件, 这个方法无法打开.
getcodex
2020 年 8 月 5 日
@nickr #17 您好,我这边尝试一打开 DB broswer for sql-lite 就崩溃,您遇到过吗
getcodex
2020 年 8 月 5 日
经过测试,这个方法在 2020-08-05 微信 Version. 2.4.2 (15063) 已失效,如哪位老哥有新的方法请 at 我,谢谢
Jyougen
2020 年 8 月 7 日
@yuanchao Version. 2.4.2 (15063) 方法可用, 但是这种方法可以把数据导入到 iOS 的微信里吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/466053

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX