Wechat Db Decrypt

# wechat-db-decrypt - 微信数据库解密与消息提取

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Wechat Db Decrypt" with this command: npx skills add as1113435/wechat-db-decrypt

wechat-db-decrypt - 微信数据库解密与消息提取

适用版本:微信 PC 3.x / 4.x 新架构(WeChatAppEx.exe),xwechat_files 格式 前提:微信已正常登录,数据库已通过 WeChatMsg.exe 或类似工具解密到 db_storage_decrypted

快速开始

已解密数据库路径

C:\Users\<用户名>\Documents\xwechat_files\<wxid>\db_storage_decrypted\

读取消息示例(Python)

import sqlite3, os, datetime

decrypted_dir = r"C:\Users\<用户名>\Documents\xwechat_files\<wxid>\db_storage_decrypted"

# 连接消息数据库
msg_db = os.path.join(decrypted_dir, "message", "message_0.db")
conn = sqlite3.connect(msg_db)
cursor = conn.cursor()

# 获取所有消息表
cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
tables = [r[0] for r in cursor.fetchall()]
msg_tables = [t for t in tables if t.startswith('Msg_')]

# 搜索关键词消息
for tbl in msg_tables:
    try:
        cursor.execute(f"SELECT message_content, create_time FROM {tbl} WHERE message_content LIKE ? LIMIT 10", ('%程序员%',))
        rows = cursor.fetchall()
        for content, ctime in rows:
            dt = datetime.datetime.fromtimestamp(ctime)
            print(f"[{dt}] {content[:100]}")
    except:
        pass

conn.close()

数据库结构解析

目录结构

<wxid>\
├── db_storage\          # 加密数据库(需密钥)
├── db_storage_decrypted\# 解密后的数据库 ← 主要操作这个
│   ├── contact\         # 联系人表
│   │   └── contact.db  # 包含 contact, chatroom_member 等表
│   ├── message\         # 消息表(按时间段分库)
│   │   ├── message_0.db  # 消息库1(~8MB)
│   │   ├── message_1.db  # 消息库2(~52MB)
│   │   └── message_2.db  # 消息库3(~43MB)
│   └── session\         # 会话列表
│       └── session.db   # SessionTable 等
└── config\              # 账号配置

contact.db 表结构

contact:       username, nick_name, remark, type 等
chat_room:     群聊基础信息
chatroom_member: 群成员列表 (member_id, member_nick, chatroom_id)

message_N.db 表结构

Msg_<hash>:    消息表(每个表对应一个聊天对象/群)
  - local_id:      本地消息ID
  - server_id:     服务器消息ID
  - create_time:   时间戳(秒)
  - real_sender_id: 发送者
  - message_content: 消息内容(二进制/文本)
  - source:        消息来源

TimeStamp:     时间戳表
Name2Id:       ID映射表(wxid <-> 数据库表名)

表名规律

  • 消息表名是加密的 hash:Msg_<32位hex>
  • 群ID格式:<数字>@chatroom
  • 单人会话:wxid_<随机字符串>

关键操作步骤

Step 1: 找到群的 chatroom_id

# 在 contact.db 的 contact 表中搜索群名
conn = sqlite3.connect(os.path.join(decrypted_dir, "contact", "contact.db"))
cursor = conn.cursor()
cursor.execute("SELECT username, nick_name FROM contact WHERE nick_name LIKE '%程序员客栈%'")
rows = cursor.fetchall()
# 得到: ('34907532207@chatroom', '程序员客栈91群')
conn.close()

Step 2: 搜索群消息

# WCDB 加密表名中没有明显的群标识,需要在所有 Msg 表中搜索内容
keywords = ['开题', '报告', '开发', '报价', '项目', '需求', '接单']

for tbl in msg_tables:
    for kw in keywords:
        cursor.execute(f"SELECT message_content, create_time FROM {tbl} WHERE message_content LIKE ?", (f'%{kw}%',))
        rows = cursor.fetchall()
        # 处理结果...

Step 3: 解析 message_content 二进制

# message_content 是 protobuf 或二进制编码,需要解码
content_bytes = row[0]
if content_bytes:
    text = content_bytes.decode('utf-8', errors='replace')
    # 通常是 XML 格式: <msg><appmsg>...
    # 或直接是文本

Step 4: 导出需求数据

# 按时间段统计需求类型
results = []
for tbl in msg_tables:
    cursor.execute(f"SELECT message_content, create_time FROM {tbl} WHERE message_content LIKE '%报价%' OR message_content LIKE '%需求%'")
    for content, ctime in cursor.fetchall():
        if content:
            dt = datetime.datetime.fromtimestamp(ctime)
            results.append({'time': dt, 'content': str(content)[:200]})

解密状态判断

已解密

  • db_storage_decrypted 目录存在且包含 .db 文件
  • sqlite3 可直接打开,Tables 有 Msg_ 前缀
  • HMAC 验证:数据库文件头不是 SQLite format 3(加密头)

未解密

  • db_storage.db 文件 sqlite3 打开报错:file is not a database
  • .material 文件存在(加密分片)

解决方案(未解密时)

方案A:下载 WeChatMsg.exe

  1. https://memotrace.lc044.love/ 或夸克网盘
  2. 下载编译好的 exe,直接运行
  3. 它会自动找到微信进程、提取密钥、解密数据库

方案B:修复 pywxdump

# 如果是 WeChatAppEx.exe 进程名问题,修改 pywxdump 源码
site_pkg = r"C:\Users\<用户名>\AppData\Local\Programs\Python\Python312\Lib\site-packages\pywxdump"

# 修改 PROCESS_NAMES
with open(f"{site_pkg}\\wx_core\\wx_info.py", 'r') as f:
    content = f.read()
content = content.replace(
    'if name == "WeChat.exe"',
    'if name in ["WeChatAppEx.exe", "WeChat.exe"]'
)
with open(f"{site_pkg}\\wx_core\\wx_info.py", 'w') as f:
    f.write(content)

方案C:手动内存扫描(进阶)

  1. 附加 pymem 到 WeChatAppEx.exe
  2. 搜索 android/iphone string 附近的高熵数据
  3. 用 HMAC 验证候选密钥
  4. 参考 simple_key_scan.py / pymem_key_scan.py 脚本

已知问题

微信版本太新(2.4.1.19433)

  • pywxdumpWeChatMsg 源码不支持
  • 解决:用编译好的 exe(已更新版本)

android string 在 flue.dll 而非 xweb_elf.dll

  • 密钥不在 xweb_elf.dll 中
  • flue.dll(209MB)里的 android string 是音频引擎的协议数据,不是密钥附近

pymem pattern_scan_module 在大模块上失败

  • 某些模块内存不可读,跳过即可
  • read_bytes 分段读取更稳定

相关文件

文件说明
read_decrypted_db.py读取已解密数据库示例
search_group_messages.py搜索群消息示例
full_msg_search.py全库关键词搜索
sqlite_mem_scan.py内存中搜索 SQLite 明文
pymem_key_scan.pypymem 内存扫描找密钥

使用场景

  • 微信群需求分析(程序员客栈91群等)
  • 聊天记录导出备份
  • 对手情报收集(竞品动态)
  • 客户需求挖掘(AI接单方向选择)

安全提醒:仅用于个人数据备份和本人合法用途,禁止非法采集他人信息。

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Video A2e

convert audio files into audio-driven videos with this skill. Works with MP3, WAV, AAC, M4A files up to 200MB. podcasters, musicians, content creators use it...

Registry SourceRecently Updated
General

Product Description Writer

Write high-converting product descriptions optimized for specific platforms and audiences. Use when creating new product listings, rewriting underperforming...

Registry SourceRecently Updated
General

Video King

Turn a 2-minute unedited screen recording into 1080p polished MP4 videos just by typing what you need. Whether it's turning raw footage into professional-loo...

Registry SourceRecently Updated
General

Generator In Hinglish

Skip the learning curve of professional editing software. Describe what you want — generate a voiceover video with Hinglish narration and subtitles — and get...

Registry SourceRecently Updated