微信聊天记录 BAK_0_TEXT 和 BAK_0_MEDIA
大佬好,我现在已经破解了 macOS 版微信的 Backup.db 文件,方法见链接:https://github.com/nalzok/wechat-decipher-macos
接下来我希望从 BAK_0_TEXT 和 BAK_0_MEDIA 这两个文件中提取聊天记录,但是根据观察 macOS 版微信应该是直接把移动端发过来的加密数据包追加写进 BAK_0_TEXT 文件的,并没有在电脑端上使用 AES 解密。如果要进一步分析,那我还得去找台 root 或者越狱过的移动设备,而且我对移动端的逆向工程本身就不了解,就很麻烦。
不过我发现电脑端和手机端互相发 dataPush 协商同步聊天记录的时候用的 RC4 密钥和加密 Backup.db 时用的 AES 密钥一致,所以盲猜这两个文件用的密钥也是它,但解密用的参数我不清楚。目前试了下面的参数,没有成功。例子中的 501264 是 Backup.db 的 MsgSegments 表中第一行的 Length 字段,目的是要分割出供解密的第一块,然后密钥是 32 个 hexadecimal digits,来自 xlogger 日志中的 DEBUG: backup db: encryptkey[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] from server
$ head -c 501264 BAK_0_TEXT > BAK_0_TEXT_CHUNK
$ openssl enc -d -aes-256-cbc -in BAK_0_TEXT_CHUNK -out PWN_BAK_0_TEXT_CHUNK -k xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
bad magic number
想知道我现在的方向对不对,另外请教一下把这个文件的每一块分割好之后用 AES 解密的参数应该是什么?如果担心这里说话不方便,我们也可以通过邮件交流 [email protected]
1.移动端分析的工具比较多,我是把移动端基本上备份流程都走完过的,最后到套接字那层。 2.你既然都分析到AES算法了,那无非就是个密钥的问题。 3.按块切割进行加解密的思路是对的。 4.电脑端不进行聊天内容的解析,但有AES密钥的(就像有Backup.db的密钥一样)。只不过你要分析聊天内容加解密,必须在移动端进行。
多谢指点。后来我在闲鱼上收了部旧 iPhone,自己用 Frida 捣鼓了一下把 AES 加密解开了。我理解的流程是聊天记录从 WCDB 出来后先被转成 protobuf,然后用 AES 加密,产生的密文和一些 metadata 一起塞进另一层 protobuf,接着用 RC4 二次加密,最后再通过 mmtls 走套接字发到电脑端。这个加密协议实在有点魔性:它用 AES-128-ECB 我就不说什么了,密钥的有效长度竟然只有 64 位,而且和 RC4 用的基本上是同一个密钥。
现在回头看我其实走了不少弯路,下次遇到类似的问题直接用 frida-trace -U WeChat -I libcommonCrypto.dylib 把输入输出和调用堆栈打印出来就能把整个流程摸清楚了。
大佬还有什么进展方便分享吗,比如 protobuf 的字段含义?如果你已经猜出来的话可以帮我节省不少时间hhh
字段含义全靠猜,每个类型的都不一样。
每个类型的都不一样。
我不是很明白 “每个类型” 是指什么,聊天记录备份里的每条消息应该都是 BakChatMsgList 的实例吧?
另外我从反汇编看下来这个类(或者它的父类 WXPBGeneratedMessage)中的 serializedData 方法应该就是把数据序列化成 protobuf 格式的函数,可惜我在砸壳后的二进制文件里怎么也找不到这个方法的实现。
博主你好,我最近也在研究微信的mmtls协议,微信通过短连接中POST传输的http-mmtls报文具有一定的格式,不知道其中是否存在可以标识微信功能的字段?
博主你好,有后续破解BAK_0_TEXT 和 BAK_0_MEDIA的方式吗,如有请共享下,谢谢
@luuuuuuy 可以看看我的 https://github.com/nalzok/wechat-decipher-macos
@luuuuuuy 请问下已经实现了BAK_0_TEXT 和 BAK_0_MEDIA文件解析了吗
@cnicy 还没
我抽空整理一下代码,你们参考一下。 因为是一年前的了,和现在版本肯定是不一样的。
大佬厉害!我看到有软件已经可以直接解析微信聊天记录 BAK_0_TEXT 和 BAK_0_MEDIA 和 DB 里面的文件了。不过那个要付费。不知道他们怎么搞的。 而且他们是在 Windows 端实现的。
@nalzok $ head -c 501264 BAK_0_TEXT > BAK_0_TEXT_CHUNK $ openssl enc -d -aes-256-cbc -in BAK_0_TEXT_CHUNK -out PWN_BAK_0_TEXT_CHUNK -k xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx bad magic number
第二个命令里的 -k xxxxxx,这个是根据什么填写的?
@2019jack 时间太久远我自己都记不清了,应该是一个密钥吧,你试着在后台运行 pcbakchat/gather.d 的同时登录微信,看看会不会啥输出
@nalzok 方便email沟通一下?有发送你email
@2019jack @zhoubeichen20 @luuuuuuy 可以提取 BAK_0_TEXT 和 BAK_0_MEDIA 和 DB 里面的内容了吗
大佬,你那Windows端提取BAK_0_Txt那两个文件的内容是在哪里看到的,可以分享一下吗
如何解决,可以发下吗,谢谢
qinqin668 @.***> 于2023年6月14日周三 17:49写道:
已经解决pc的BAK_0_TEXT加密
— Reply to this email directly, view it on GitHub https://github.com/sumous/anti_sign/issues/4#issuecomment-1590866090, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUTHLTDQHBULYQ2HF6WNMT3XLGCLBANCNFSM42MTPRSQ . You are receiving this because you were mentioned.Message ID: @.***>