这两天基于 DTrace 写了一套能从微信客户端里读取聊天记录的小玩具。项目还有些粗糙,但目前已经支持读取实时聊天信息、macOS 客户端本地的聊天记录、以及从移动客户端备份到 macOS 上的聊天记录(对于备份只能读一个索引数据库,后期还需要加工)
感兴趣的话可以来看看: https://github.com/nalzok/wechat-decipher-macos
1
touzi 2021-01-13 22:04:59 +08:00
感觉很高级的样子
|
2
oreoiot 2021-01-13 22:15:28 +08:00 via iPhone
备份是指通过 macOS 版微信备份的 iOS 版的记录,还是说通过 Finder 备份?
看过一下备份的东东,应该是大同小异? |
3
Rorysky 2021-01-13 22:20:31 +08:00
加密怎么解决的
|
4
nalzok OP @oreoiot 是通过 macOS 版微信备份的 iOS 版的记录。备份得到的 Backup.db 里只存了各个聊天记录在另一个(疑似 protobuf 格式?)文件里的 offset 和 size,所以还需要手动提取一下。
|
5
nalzok OP @Rorysky 我是直接通过 DTrace probe 获取内存里的 AES 密钥的,具体实现可以看看 dbcracker.d,它会把数据库文件的路径和对应的密钥都打印出来(多线程会导致结果看起来比较乱,但基本能辨识)。
|
7
qiayue 2021-01-13 22:40:00 +08:00
楼主我有个需求,你看看能不能做,把我自己几个微信里的通讯录导出来,可付费
|
8
nalzok OP @qiayue 抱歉哦,我暂时没时间接私活。不过你可以先运行 `dbcracker.d`,然后用 macOS 客户端备份手机微信里的聊天记录。我的脚本会告诉你怎么查看聊天记录备份(就是那个 Backup.db )里的数据,数据库里有张表叫 Session,里面存着和你有过对话的用户的微信号和昵称。
|
10
aheadlead 2021-01-13 23:09:21 +08:00
这个思路牛逼 👍
|
11
aheadlead 2021-01-13 23:10:24 +08:00
其实微信的表情也不好弄出来,比较烦人…
p.s. 楼主是不是以前做天蓝村的呀? id 有点熟悉 |
13
nalzok OP @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,但是不清楚它具体是什么格式。
|
15
FightPig 2021-01-14 02:11:48 +08:00
正好看看。
|
16
hsfzxjy 2021-01-14 08:55:38 +08:00 via Android 1
我写过一个油猴脚本用于导出微信表情,不过要求能登录网页版微信。https://github.com/hsfzxjy/collect-wx-emoticon
|
17
cxe2v 2021-01-14 09:46:48 +08:00
这玩意。。。微信后续会封杀和修改聊天记录加密方式吧
|
18
Ritter 2021-01-14 10:03:15 +08:00
windows 可以使用吗
|
20
nalzok OP @cxe2v 我觉得不至于?首先,本地的聊天记录本身就是我自己的数据,用客户端就能看到,没啥好保密的;其次,底层数据库的读写代码牵扯到的环节太多,改写它还要冒着导致用户数据丢失的风险,不值得;最后,之前好像就有人把聊天记录备份的密钥读出来了,只不过我们的思路不一样
|
21
nalzok OP @Ritter 我估计够呛,不过 Windows 上也有 DTrace ( https://github.com/microsoft/DTrace-on-Windows ),用我的思路应该可以做出点东西来
|
22
fox1751 2021-01-14 11:39:59 +08:00 via iPhone
是本身能登陆微信号的情况下把聊天记录提取出来还是在无法登陆微信号的情况下通过数据文件把聊天记录提取出来?
|
23
Joysisyphus 2021-01-14 12:00:01 +08:00
有一个类似功能的软件已经做得挺成熟的了 http://wxbackup.imxfd.com
|
24
dangyuluo 2021-01-14 12:08:38 +08:00
@Joysisyphus #23 不错,只是聊天记录太敏感,不太放心用第三方工具
|
25
nalzok OP @fox1751 需要登录微信才能提取。这些脚本的原理是获取内存中的 secret,所以前提是内存里首先得有 secret
|
26
moonkiller 2021-01-14 16:17:08 +08:00 1
求一个微信收藏导出工具…
只有 2G 空间,因为收藏的视频多了点就达到上限了 微信备份又不备份收藏… 好烦 怎么批量导出备份… |
28
nalzok OP @moonkiller 我记得用 dbcracker.d 可以扫出来一个名叫 favourite.db 的数据库,但是不知道它和收藏有什么关系,你可以去研究看看?
|
29
goxxoo 2021-01-14 16:43:13 +08:00
用 iTunes 导出,楼月备份,python 导出 html,声音,图片
|
30
looking0truth 2021-01-14 17:27:35 +08:00
有没有办法导出电脑上的聊天记录,不是手机备份过去的。。。
|
31
nalzok OP @looking0truth 用仓库里的 `dbcracker.d` 就可以导出呀,README 里有写,运行这个脚本然后再登录微信就可以看到本地聊天记录数据库的路径和密钥了
|
32
azhangbing 2021-01-14 19:22:49 +08:00
start 了 试一下
|
35
qwezxcassd 2021-01-14 23:51:26 +08:00 via Android
@FS1P7dJz 起诉有依据吗?不管微信再流氓,至少用户的本地聊天记录是归属于用户自己的吧。
|
36
FS1P7dJz 2021-01-15 00:19:58 +08:00
@qwezxcassd 数据库是加密的啊,作者也说了,是内存获取密钥的
说白了这种事情,你哪怕是用公开 API,但是结果不如腾讯所愿,依然可以封杀你,更别提这种不敞亮的技术了 个人开发者怎么可能与南山必胜客抗衡 |
37
hs0000t 2021-01-15 01:30:07 +08:00 via Android
楼主一定要保护好自己
|
38
nalzok OP 谢谢各位的提醒。主要我这几个脚本都是观测性质的,并没有做什么影响程序行为的操作,因此 “破坏计算机信息系统罪” 的帽子很难扣到我头上,这也是我敢把它放到 GitHub 上的原因。再说,如果说看一眼自己电脑的内存都犯法,那实在是有点牵强,所以我感觉微信顶多也就以违反 EULA 的由头把我微信号封掉(虽然那已经很惨了 = =)。当然,我也毫不怀疑南山必胜客的实力,所以如果真的有幸收到腾讯的律师函,我应该就删 repo 跑路了。
|
39
shunconf 2021-01-15 10:10:59 +08:00
@Joysisyphus 不支持安卓手机和 win 客户端
|
40
Celeste95 2021-01-15 11:06:24 +08:00
QQ 可以用类似的思路实现吗?
|
41
codersui 2021-01-15 11:12:47 +08:00 via iPhone
不错
|
42
nalzok OP @Celeste95 DTrace 是一个通用的动态分析工具,所以不管是 QQ 还是 Telegram 还是网易云还是 Among Us,都可以用这个思路来窥探应用程序内部的状态。我觉得只要聊天记录是存在本地的,那就没有读不出来的道理。
|
43
bbbb 2021-01-15 20:10:26 +08:00 via iPhone
感谢分享,研究研究
|
44
vincentxue 2021-01-15 23:26:34 +08:00
如果你这个能直接从 macOS 端提取聊天记录或者从备份到电脑上聊天记录里面提取那就很有用了。如果要从备份里提取,那其实已经有很成熟的了。http://wxbackup.imxfd.com/
|
45
vincentxue 2021-01-15 23:27:13 +08:00
@vincentxue 好像有人说了,忽略我。
|
46
nalzok OP @vincentxue “如果你这个能直接从 macOS 端提取聊天记录或者从备份到电脑上聊天记录里面提取那就很有用了。” 哈哈,这两个功能 dbcracker.d 都能实现 :)
|
47
Kenny 2021-01-17 09:12:29 +08:00
有没有备份安卓手机的呢
|