解密微信数据库文件解析
一、微信数据库文件是什么?
EnMicroMsg.db(安卓)/ Msg.db/ChatMsg.db(PC):聊天记录、联系人、会话
MicroMsg.db:联系人、账号信息
MediaMsg.db:语音、图片、视频索引
FTSMsg.db:全文搜索索引
.db 文件均用 SQLCipher(AES-256) 强加密,直接用 SQLite 工具打开会报错:file is encrypted or is not a database二、各平台数据库文件位置
1. Android(最完整,需 Root)
/data/data/com.tencent.mm/MicroMsg/【用户哈希文件夹】/
2. Windows PC(最容易获取,无需 Root)
C:\Users\【你的用户名】\Documents\WeChat Files\【微信号】\Msg\
3. macOS
~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/【哈希】/Msg/
4. iOS
无法直接访问沙盒,需通过 iTunes 备份 + 备份解密工具 获取数据库
三、加密原理(为什么不能直接打开)
算法:AES-256-CBC
密钥:16/32 字节随机密钥,不硬编码
密钥派生:PBKDF2-HMAC-SHA1,迭代次数 4000
页大小:1024 字节(SQLCipher 关键参数)
密钥生成逻辑(安卓)
IMEI:手机序列号(拨号 *#06# 查看)
UIN:微信内部 ID(可在登录缓存中找到)
四、解密步骤(分平台)
✅ 安卓(Root 后,成功率最高)
手机 Root → 进入
/data/data/com.tencent.mm/MicroMsg/【哈希】/复制 EnMicroMsg.db 到电脑
提取密钥:
方法 1:
adb shell cat /data/data/com.tencent.mm/sp/auth_info_key_prefs.xml查看加密密钥方法 2:计算
MD5(IMEI+UIN)取前 16 字节(Hex 格式)用 SQLCipher 工具 解密:
# 安装 sqlcipher(mac/linux)brew install sqlcipher# 解密(关键参数:page_size=1024, kdf_iter=4000)sqlcipher EnMicroMsg.db "PRAGMA key = '【16字节Hex密钥】'; PRAGMA cipher_page_size=1024; PRAGMA kdf_iter=4000; ATTACH DATABASE 'decrypted.db' AS plaintext KEY ''; SELECT sqlcipher_export('plaintext'); DETACH DATABASE plaintext;"✅ Windows PC(无需 Root,最简单)
关闭微信(必须!否则文件被占用)
进入
C:\Users\【用户名】\Documents\WeChat Files\【微信号】\Msg\复制 ChatMsg.db 到桌面
用工具 WeChatDecryptor / wx_db_reader 自动解密(需微信登录态)
工具会自动读取本地密钥 → 解密 → 生成
decrypted_ChatMsg.db
✅ iOS(需备份解密)
用 iTunes 备份整机(不加密备份)
用工具 iBackupBot / iPhone Backup Extractor 提取微信数据库
用 SQLCipher 解密(密钥与设备绑定,需原设备信息)
五、解析数据库表结构(核心表)
1. Message(聊天记录主表)
CREATE TABLE Message ( MsgId INTEGER PRIMARY KEY, Talker TEXT, -- 对方ID(微信号/群ID@chatroom) Content TEXT, -- 消息内容(文本/表情/链接) CreateTime INTEGER, -- 时间戳(秒) MsgType INTEGER, -- 1=文本,3=图片,34=语音,49=链接 IsSend INTEGER -- 0=接收,1=发送);
2. Contact(联系人表)
CREATE TABLE Contact ( UserName TEXT PRIMARY KEY, -- 微信号 NickName TEXT, -- 昵称 Remark TEXT, -- 备注 HeadImgUrl TEXT -- 头像链接);
3. ChatRoom(群聊表)
CREATE TABLE ChatRoom ( ChatRoomName TEXT PRIMARY KEY, -- 群ID@chatroom RoomOwner TEXT, -- 群主ID MemberList TEXT -- 成员ID列表(逗号分隔));
六、推荐工具(一键解密 + 解析)
1. 安卓
wx_db_reader:开源,自动获取密钥 + 解密 + 导出 HTML
SQLCipher Manager:图形化,输入密钥直接打开
2. Windows
WeChatDecryptor:一键解密 PC 版 ChatMsg.db
DB Browser for SQLite:免费,打开明文 db,支持查询 / 导出
3. 跨平台
OpenWebUI+SQLite 插件:Web 端直接上传 db 查询
Python 脚本:用
pysqlcipher3解密 + 解析
七、常见问题
- 报错:not a database→ 密钥错误 / 页大小不对 / 文件损坏。核对密钥、加
cipher_page_size=1024参数。 - PC 版解密失败→ 微信未完全关闭(进程占用);或微信版本太高(工具未适配)。
- iOS 无法获取密钥→ iOS 密钥在 Secure Enclave,无法导出,只能用原设备备份解密。
八、总结
微信数据库是 SQLCipher 加密的 SQLite,核心是 获取正确密钥
安卓:Root + IMEI+UIN 算密钥 → 解密
PC:直接复制文件 → 工具一键解密(最简单)
解析:用 SQLite 工具查 Message/Contact/ChatRoom 表






