微信聊天记录提取工具🔧

2021-01-13 19:59:53 +08:00
 nalzok

这两天基于 DTrace 写了一套能从微信客户端里读取聊天记录的小玩具。项目还有些粗糙,但目前已经支持读取实时聊天信息、macOS 客户端本地的聊天记录、以及从移动客户端备份到 macOS 上的聊天记录(对于备份只能读一个索引数据库,后期还需要加工)

感兴趣的话可以来看看: https://github.com/nalzok/wechat-decipher-macos

11052 次点击
所在节点    macOS
48 条回复
touzi
2021-01-13 22:04:59 +08:00
感觉很高级的样子
oreoiot
2021-01-13 22:15:28 +08:00
备份是指通过 macOS 版微信备份的 iOS 版的记录,还是说通过 Finder 备份?
看过一下备份的东东,应该是大同小异?
Rorysky
2021-01-13 22:20:31 +08:00
加密怎么解决的
nalzok
2021-01-13 22:35:31 +08:00
@oreoiot 是通过 macOS 版微信备份的 iOS 版的记录。备份得到的 Backup.db 里只存了各个聊天记录在另一个(疑似 protobuf 格式?)文件里的 offset 和 size,所以还需要手动提取一下。
nalzok
2021-01-13 22:39:47 +08:00
@Rorysky 我是直接通过 DTrace probe 获取内存里的 AES 密钥的,具体实现可以看看 dbcracker.d,它会把数据库文件的路径和对应的密钥都打印出来(多线程会导致结果看起来比较乱,但基本能辨识)。
nalzok
2021-01-13 22:39:54 +08:00
@touzi 嘿嘿谢谢!
qiayue
2021-01-13 22:40:00 +08:00
楼主我有个需求,你看看能不能做,把我自己几个微信里的通讯录导出来,可付费
nalzok
2021-01-13 23:00:42 +08:00
@qiayue 抱歉哦,我暂时没时间接私活。不过你可以先运行 `dbcracker.d`,然后用 macOS 客户端备份手机微信里的聊天记录。我的脚本会告诉你怎么查看聊天记录备份(就是那个 Backup.db )里的数据,数据库里有张表叫 Session,里面存着和你有过对话的用户的微信号和昵称。
qiayue
2021-01-13 23:06:51 +08:00
@nalzok 好的,谢谢
aheadlead
2021-01-13 23:09:21 +08:00
这个思路牛逼 👍
aheadlead
2021-01-13 23:10:24 +08:00
其实微信的表情也不好弄出来,比较烦人…

p.s. 楼主是不是以前做天蓝村的呀? id 有点熟悉
aheadlead
2021-01-13 23:10:39 +08:00
看错了 @qiayue 是这位。。
nalzok
2021-01-13 23:30:56 +08:00
@aheadlead 哈哈,表情包在数据库里类似于这样:'<msg><emoji md5="be2112fde8a67b319b27f2e798a03d0b" type="2" len = "6448"></emoji><gameext type="0" content="0" ></gameext></msg>' 根据里面的 md5 字段我找到了一个文件 /Users/nalzok/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/xxxxxxxx/Stickers/File/Stickers/File/be2112fde8a67b319b27f2e798a03d0b,但是不清楚它具体是什么格式。
aheadlead
2021-01-13 23:36:00 +08:00
@nalzok #13 是的 很早之前也研究过了这块 也一直搞不清楚啥格式
FightPig
2021-01-14 02:11:48 +08:00
正好看看。
hsfzxjy
2021-01-14 08:55:38 +08:00
我写过一个油猴脚本用于导出微信表情,不过要求能登录网页版微信。https://github.com/hsfzxjy/collect-wx-emoticon
cxe2v
2021-01-14 09:46:48 +08:00
这玩意。。。微信后续会封杀和修改聊天记录加密方式吧
Ritter
2021-01-14 10:03:15 +08:00
windows 可以使用吗
qiayue
2021-01-14 10:05:05 +08:00
@aheadlead 是天蓝村
nalzok
2021-01-14 10:31:09 +08:00
@cxe2v 我觉得不至于?首先,本地的聊天记录本身就是我自己的数据,用客户端就能看到,没啥好保密的;其次,底层数据库的读写代码牵扯到的环节太多,改写它还要冒着导致用户数据丢失的风险,不值得;最后,之前好像就有人把聊天记录备份的密钥读出来了,只不过我们的思路不一样

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

https://www.v2ex.com/t/744679

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

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

© 2021 V2EX