原 chatlog 项目的二开版本,导入自 xiaofeng2042 的分支,以防止上游删库后分支被自动删除。
未经修改的源代码在 main 分支,本人不对代码中的任何内容负责。
感谢 wx_key 项目提供的解密源码
目前测试成功微信版本:4.1.5.30
- MCP 扩展功能大版本更新:
- 媒体感知服务 (Media Perception):
- 新增
get_media_content工具:支持根据消息 ID 获取解码后的媒体文件(图片自动解密、语音转 MP3)。 - 新增
ocr_image_message工具:支持对特定图片消息进行视觉 OCR 解析(由模型驱动)。
- 新增
- 实时消息交互 (Real-time Interaction):
- 新增
subscribe_new_messages工具:允许模型通过资源更新机制订阅特定联系人或群组的实时消息流(资源路径:chatlog://realtime/{talker})。 - 新增
send_webhook_notification工具:允许模型在分析完成后触发外部 Webhook。
- 新增
- 社交画像与分析 (Social Insights):
- 新增
analyze_chat_activity工具:统计发言频率、活跃时段(带柱状图可视化模拟)。 - 新增
get_user_profile工具:获取详细的联系人备注、群成员、群主等背景信息。
- 新增
- 增强型提示词模板 (Prompts):
- 内置
chat_summary_daily(每日摘要)、conflict_detector(情绪冲突检测)、relationship_milestones(关系里程碑)模板。
- 内置
- 跨应用检索:
- 新增
search_shared_files工具:专项搜索聊天记录中发送的共享文件元数据。
- 新增
- 媒体感知服务 (Media Perception):
- 系统底层优化:
- 唯一消息 ID 系统:引入
(timestamp * 1000000 + local_id)算法,彻底解决多媒体消息在同一秒内发送导致的 ID 冲突问题。 - 多格式适配:PlainText、CSV、JSON 均已同步支持显示唯一的
MessageID(seq)。 - 文本清理:优化聊天记录输出,简化图片、语音、视频消息的显示标签(例如
[图片]),使模型处理更高效。
- 唯一消息 ID 系统:引入
- 自动解密机制优化:
- 增加开启前预检:开启自动解密前会自动运行一次解密测试,失败则禁止开启。
- 增加故障自动熔断:运行过程中若解密失败(如密钥失效),会自动停止服务并弹窗提示,防止错误循环。
- UI 交互增强:
- 底部状态栏增加最新消息预览:实时显示最新一条消息的发送人、时间及内容摘要。
- 优化发送人显示逻辑:昵称缺失时自动降级显示账号 ID。
- 修复:
- 修复批量解密时即便所有文件失败仍提示成功的 Bug。
- 修复图片密钥获取在样本未就绪/选到不匹配备用样本时“扫描很多轮仍无法获取”的问题:改为等待
*_t.dat就绪后再开始扫描。
- 重构密钥获取逻辑:实现 Data Key (DLL) 和 Image Key (原生扫描) 的职责分离与并行执行。
- 优化图片密钥获取:适配 Dart 版逻辑,支持 60 秒轮询等待,允许用户后置操作(打开图片)。
- 修复与优化:修复未登录时扫描崩溃问题;增加详细的扫描日志;优化 UI 菜单交互。
- 暂停 V3 支持:集中资源优化 V4 体验。
- 优化临时账户名称管理。
- 改进微信进程状态监控逻辑。
这是一个微信聊天记录解密工具,当前仅支持 Windows 平台。工具通过注入DLL或内存扫描的方式获取微信数据库密钥,然后解密微信聊天数据库文件。
注意:当前版本已移除对微信 3.x 版本的支持,仅支持微信 4.x。
- 密钥获取:
- 数据库密钥 (Data Key):通过 DLL 注入 (
wx_key.dll) 高效获取。 - 图片密钥 (Image Key):通过原生内存特征扫描获取,无需 DLL 支持(适配
img-key.dart逻辑)。
- 数据库密钥 (Data Key):通过 DLL 注入 (
- 并行获取:支持同时并行获取两种密钥,提高效率。
- 数据库解密:解密微信加密的SQLite数据库文件。
- 图片解密:解密微信加密的图片文件(需要图片密钥)。
- 自动监控:监控微信数据目录,自动解密新增数据。
- HTTP服务:提供本地HTTP服务,支持MCP协议。
- 启动
chatlog_alpha.exe。 - 启动微信(先不要点击登录)。
- 等待 chatlog 识别到微信进程 PID。
- 点击微信登录。
- 程序通过 DLL 自动捕获数据密钥。
- 确保微信已登录。
- 在 chatlog 主界面选择 "获取图片密钥" 选项。
- 程序会先等待图片验证样本就绪(需要微信生成缩略图缓存文件
*_t.dat)。 - 在微信中打开任意一张聊天图片(触发缓存/密钥相关数据生成)。
- 当
*_t.dat生成后,程序会提示 "正在进行第 X 轮内存扫描... 请打开任意图片" 并开始扫描。 - 程序自动捕获内存中的图片密钥并返回。
说明:不需要“很快”打开图片;只要最终打开过图片让
*_t.dat生成,程序就能稳定获取图片密钥。
注:解密数据操作会自动尝试获取两种密钥。
程序启动后会出现TUI界面,主要功能包括:
- 获取图片密钥:专门用于扫描内存获取图片密钥(需微信V4)。
- 重启并获取密钥:结束当前微信进程,重启后尝试获取密钥。
- 解密数据:一键解密数据库(包含自动获取 Data Key 的逻辑)。
- 启动HTTP服务:启动本地HTTP & MCP服务器。
- 开启自动解密:监控数据目录,自动解密新增数据。
- 设置:配置应用程序选项。
- 切换账号:切换当前操作的账号。
- 退出:退出程序。
-
Data Key (DLL 模式):
- 依赖
wx_key.dll。 - 通过 Hook 微信关键函数获取。
- 推荐在微信启动/登录阶段获取。
- 依赖
-
Image Key (原生扫描模式):
- 不依赖 DLL,使用 Go 原生代码实现。
- 采用暴力内存扫描 + 特征匹配(32字节字母数字串)+ 验证(AES解密缩略图头)。
- 交互式获取:支持长达 60 秒的轮询等待,允许用户在点击按钮后从容打开图片。
- 关键依赖:验证必须使用缩略图缓存样本
*_t.dat(由“打开聊天图片”触发生成)。样本未就绪时会持续等待提示,而不会进行无效扫描。 - 稳定性说明:为避免选到不匹配的备用
.dat样本导致“扫描很多轮仍失败”,当前仅在检测到*_t.dat后才认为图片验证就绪并开始扫描。
程序支持临时账户管理,当微信未登录或重启时:
- 临时账户名称:格式为
未登录微信_PID。 - 状态监控:实时监控微信进程状态变化。
- 自动切换:微信登录后自动切换为真实账户名称。
配置文件位于用户目录下的 .chatlog/config.json。
-
ffmpeg依赖: 对dat转换一定要安装ffmpeg,并且在系统变量设置bin目录的path,否则会显式报错。
-
权限: 程序需要管理员权限来读取微信进程内存。
-
V4 图片密钥: 对于微信 V4,图片密钥获取需要用户配合打开图片以生成
*_t.dat。如果长时间未获取,请检查:- 微信是否已登录成功(不能停留在登录界面)
- 是否打开过任意聊天图片(触发生成
*_t.dat)
chatlog_alpha/
├── main.go # 程序入口
├── internal/
│ ├── chatlog/ # 聊天记录处理核心
│ ├── wechat/ # 微信相关功能
│ │ ├── wechat.go # 账号管理与密钥获取入口
│ │ ├── key/ # 密钥提取器 (DLL & Native)
│ │ │ ├── windows/ # Windows 实现 (v4_windows.go, dll_extractor.go)
│ │ ├── decrypt/ # 解密器
│ │ └── process/ # 进程检测
│ └── ui/ # 用户界面组件
├── pkg/
│ ├── util/ # 工具函数 (dat2img 等)
├── lib/
│ └── windows_x64/ # wx_key.dll
本项目基于原chatlog项目,具体许可证信息请参考原项目。
本项目仅供学习和研究使用,请勿用于非法用途。使用本工具产生的任何后果由使用者自行承担。