搜索pc版微信数据库密钥key
本帖最后由 sunbeat 于 2023-10-27 11:41 编辑# search_wechat_key
## 本程序用来搜索微信数据库的密钥key信息
**不要用于非法用途!**
**不要用于非法用途!**
**不要用于非法用途!**
## 原理
一般情况下,key 要在运行的微信进程内存中拿到,内存偏移在每个版本都不一样,大部分工具是对每个版本维护一套偏移,但是当出现新版本的时候都要重新找偏移。
其实,除了这个方法外,还有一个更通用的方法就是内存暴力搜索找到能用于解密的密钥位置,当然如果对进程全部内存扫一遍肯定不行,所以项目里用下面这种方式缩小密钥内存范围加快扫描速度:
1. 微信登录设备类型基本只有 iphone、android,在内存中先搜到设备类型所在内存,key 就在它的前面,向前搜就行;
2. key 的内存地址和登录设备类型在大部分版本是16 字节对齐的,但也有非16字节对齐,这里用的是每次向前 1 字节方式,避免遇到非对齐情况;
每次读32字节,然后判断读取的是不是微信sqlite的数据库密钥。 密钥找到后,可以为后续读取微信聊天记录做准备。
## 已测试版本列表
其它未测试版本不代表不能用,这个列表只是我本地有过的环境。
- 3.9.7.29 (64位版)
- 3.9.7.28 (32位版)
## 用法类似:
```
C:\Users\Win10\Desktop\pc_wechat\dist>search_wecaht_key.exe
2023-10-26 13:52:01,281 - search_wecaht_key.py- INFO - wechat version:3.9.7.28
2023-10-26 13:52:01,583 - search_wecaht_key.py- INFO - db_file:C:\Users\Win10\Documents\WeChat Files\wxid_cpyn7pe119rxxx\Msg\Misc.db
2023-10-26 13:52:01,699 - search_wecaht_key.py- INFO - phone_addr:713817B8
2023-10-26 13:52:01,888 - search_wecaht_key.py- INFO - found key pointer addr:71381744, key_addr:7417E70
2023-10-26 13:52:01,888 - search_wecaht_key.py- INFO - key:eb204727b80a44dea374ee92df27fb06ef7218098ae7473bafc695b9b5a9xxxx
2023-10-26 13:52:01,888 - search_wecaht_key.py- INFO - eb204727b80a44dea374ee92df27fb06ef7218098ae7473bafc695b9b5a9xxxx
```
## 如何手动寻找偏移
使用 CheatEngine 在内存中搜索找到字符串android(我的手机是安卓,如果是iphone的,用iphone搜),必须是在 `WeChatWin.dll` 内存范围内
下载地址: (https://pan.baidu.com/s/1R3U3sleKvUUxg50ZdbWEkw?pwd=dbeq) 提取码:dbeq
v1.1版本:修复了key_addr可能会小于min_addr的不过,否则会把正确的key指针位置给跳过了:
(https://pan.baidu.com/s/1d4q3nL8di5DdEHX5yvckDg?pwd=9ifa) 提取码: 9ifa
源码:(https://github.com/sunhanaix/search_wechat_key)
本帖最后由 sunbeat 于 2023-11-7 15:30 编辑
smpeaer 发表于 2023-11-6 17:27
这个是怎么回事丫,操作对不对
这不是把key找到并列出来了么?
微信后面版本,不是简单用sqlcipher 3的格式了,在它自己大一统了安卓、IOS、windows的sqlite3后,抽象出来了WCDB。
https://github.com/Tencent/wcdb
目前我试了几个工具,CLI、GUI的,输入key,都不能直接读这个WCDB。
(我编译了pysqlcipher3,输入这个正确的key,也是无法直接访问微信的wcdb数据库)
只能用程序python把header补上,每一数据页用key给AES还原回来,最后生成新的xxx.db,才能用其它sqlite访问工具进行读取。
如果有知道能直接读取的程序,或者工具,也欢迎大家交流
smpeaer 发表于 2023-11-7 16:21
https://github.com/0xlane/wechat-dump-rs/releases/tag/v1.0.5 这个里面得工具可以导出文件,我刚试了 ...
我的找key算法就是借鉴的这个。
从加密db解密到decrypted db,这个部分他用的也是补一个sqlite header,然后把每一页用key做AES解密写到新库里面的过程。
而不是直接sqlcipher读取。
以前微信的数据库文件是可以python直接读的,现在好像没有好办法,只能解密还原到新数据库文件,再来玩,总感觉不够优雅。不过无所谓了,我已经放弃了优雅了。
现在在做微信聊天记录的导出功能,目前文本信息,语音信息,图片信息,视频信息,转账记录,小程序信息,聊天记录多选转发信息,基本可以了,还差视频号的,位置的,动画表情这3部分。
期间各种坑还是比较多。
能读到聊天记录的好处是,可以定向清除广告群的所有聊天记录、图片、文件了,不用抹黑清os文件。
另外pc微信右键点左侧群,选择删除“聊天记录”,不会删除这个群的图片、文件……
就感觉别人拉屎了,你让微信清理走,微信把它挡上,让你看不着了,但粑粑还在…… 这个可以支持一下 厉害啊,支持一下 不够简单,不够通杀~ 是不是说可以查看聊天记录了? 技术牛人,很厉害的 厉害喽!!要来喝茶么{:1_893:} 这个牛,想想如何用{:1_918:} 不得非法使用,非法用途是指什么场景呢?:lol 这个厉害,还能手动找!