# chatlog_alpha **Repository Path**: sunboer/chatlog_alpha ## Basic Information - **Project Name**: chatlog_alpha - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-13 - **Last Updated**: 2026-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # chatlog_alpha 原 [chatlog](https://github.com/sjzar/chatlog) 项目的二开版本,导入自 [xiaofeng2042 的分支](https://github.com/xiaofeng2042/chatlog),以防止上游删库后分支被自动删除。 未经修改的源代码在 [main 分支](https://github.com/CJYKK/chatlog_backup/tree/main),本人不对代码中的任何内容负责。 感谢 [wx_key](https://github.com/ycccccccy/wx_key) 项目提供的解密源码 目前测试成功微信版本:4.1.5.30 ## 重要提示 请务必把dll文件放在exe可执行文件同目录下的lib/windows_x64文件夹下 请务必使用重启获取秘钥,而不是直接点击解密数据 ## 更新日志 ### 2026年1月13日 - **图片访问优化**: - **MD5-Path 缓存机制**:新增 md5 到 path 的映射缓存,当调用 `/api/v1/chatlog` 接口时自动构建图片文件的 md5 与路径映射关系。 - **智能文件查找**:优化 `/image/{md5}` 接口,当通过 hardlink 表无法找到图片时,会自动使用缓存中的 path 并按优先级尝试 `.dat`(原图)、`_h.dat`(高清图)、`_t.dat`(缩略图)等后缀进行文件匹配。 - **Rec 目录支持**:修复图片路径构造问题,现在支持从 `image_hardlink_info_v4` 表的 `extra_buffer` 字段提取 `Rec` 子目录信息(如 `bedce00beba0d49c`),完整路径格式为 `msg/attach/{Dir1}/{Dir2}/Rec/{extraBuffer}/Img/{FileName}`,解决部分图片文件位于 `Rec` 子目录时无法访问的问题。 - **无后缀文件支持**:增强了图片解密逻辑,现在自动将无后缀文件(如文件名为 "1")尝试当作 .dat 文件进行解密,解密失败时降级为普通文件返回,确保所有图片文件都能正确访问。 - **递回退逻辑**:实现了多层回退机制 - hardlink 表查询(含 Rec 目录)→ 缓存路径匹配 → 目录递归搜索,确保图片访问的高成功率。 - **适用场景**:特别适用于微信 v4 版本中 `packed_info_data` 提供的路径信息、部分图片存储在 Rec 子目录、以及文件名无后缀的场景。 ### 2025年12月30日 - **ChatLab 标准化支持**: - **全量适配**:消息检索功能现已完全适配 [ChatLab 标准化格式 (v0.0.1)](./chatlab.md),支持导出包含完整元数据、成员信息及标准化消息类型的 JSON 文件。 - **类型映射增强**:实现了微信私聊与群聊消息到 ChatLab 标准消息类型(文本、图片、语音、引用、合并转发等)的精确转换。 - **UI 交互增强**: - **一键下载功能**:HTTP 控制台预览框新增“下载”按钮,支持将检索结果、导出数据直接保存为 `.json` 或 `.txt` 文件。 - **JSON 格式化预览**:ChatLab 格式数据在前端支持自动缩进格式化,提升可读性。 ### 2025年12月27日 - **系统稳定性修复**: - **临时文件清理优化**:修复了在 Windows 环境下开启“自动解密”时,因文件被锁定导致临时文件无法删除、进而占用大量磁盘空间的问题。引入了后台自动重试机制,确保锁定的文件在释放后能被正确清理。 - **UI 交互增强**: - **缓存占用显示**:在 TUI 界面的 "Work Usage" 标签中增加了缓存目录占用大小的实时显示,便于用户监控磁盘使用情况。 ### 2025年12月26日 - **数据库管理与调试功能增强**: - **可视化数据库浏览器**:在 HTTP 控制台新增“仪表盘 & 数据库”标签页,支持直接浏览当前已解密的数据库。 - **表数据检索**:支持点击数据库查看所有表列表,并可对任意表进行分页数据浏览。 - **关键词全文搜索**:在表数据视图中支持输入关键词,自动对该表所有列进行模糊匹配 (`LIKE`) 搜索。 - **SQL 控制台**:内置 SQL 执行工具,支持直接编写运行 `SELECT` 语句查询原始数据。 - **多格式导出**:全面支持将数据库表数据、SQL 查询结果导出为 **Excel (xlsx)** 或 **CSV** 格式。 - **系统安全性与稳定性**: - **应用互斥功能**:引入单实例检测机制,防止程序多开。 - **进程管理**:当检测到已有实例运行时,支持在终端提示并允许强制关闭旧进程以启动新实例。 - **Windows 路径兼容性修复**:修复了在 Windows 环境下因路径分隔符不匹配导致的部分文件解密失败及前端路径显示重复的问题。 ### 2025年12月18日 - **MCP 扩展功能大版本更新**: - **媒体感知服务 (Media Perception)**: - 新增 `get_media_content` 工具:支持根据消息 ID 获取解码后的媒体文件(图片自动解密、语音转 MP3)。 - 新增 `ocr_image_message` 工具:支持对特定图片消息进行视觉 OCR 解析(由模型驱动)。 - **实时消息交互 (Real-time Interaction)**: - 新增 `subscribe_new_messages` 工具:允许模型通过资源更新机制订阅特定联系人或群组的实时消息流。 - 新增 `unsubscribe_new_messages` 工具:支持取消已有的消息订阅。 - 新增 `get_active_subscriptions` 工具:获取当前活跃的订阅列表及其推送地址。 - **订阅持久化**:所有订阅信息自动保存至本地,程序重启后可自动恢复推送。 - **推送状态监控**:可在控制台实时查看 Webhook 推送的成功、失败状态及详细错误原因。 - 新增 `send_webhook_notification` 工具:允许模型在分析完成后触发外部 Webhook。 - **社交画像与分析 (Social Insights)**: - 新增 `analyze_chat_activity` 工具:统计发言频率、活跃时段(带柱状图可视化模拟)。 - 新增 `get_user_profile` 工具:获取详细的联系人备注、群成员、群主等背景信息。 - **增强型提示词模板 (Prompts)**: - 内置 `chat_summary_daily`(每日摘要)、`conflict_detector`(情绪冲突检测)、`relationship_milestones`(关系里程碑)模板。 - **跨应用检索**: - 新增 `search_shared_files` 工具:专项搜索聊天记录中发送的共享文件元数据。 - **系统底层优化**: - **唯一消息 ID 系统**:引入 `(timestamp * 1000000 + local_id)` 算法,彻底解决多媒体消息在同一秒内发送导致的 ID 冲突问题。 - **多格式适配**:PlainText、CSV、JSON 均已同步支持显示唯一的 `MessageID` (seq)。 - **文本清理**:优化聊天记录输出,简化图片、语音、视频消息的显示标签(例如 `[图片]`),使模型处理更高效。 ### 2025年12月16日 - **自动解密机制优化**: - 增加开启前预检:开启自动解密前会自动运行一次解密测试,失败则禁止开启。 - 增加故障自动熔断:运行过程中若解密失败(如密钥失效),会自动停止服务并弹窗提示,防止错误循环。 - **UI 交互增强**: - 底部状态栏增加最新消息预览:实时显示最新一条消息的发送人、时间及内容摘要。 - 优化发送人显示逻辑:昵称缺失时自动降级显示账号 ID。 - **修复**: - 修复批量解密时即便所有文件失败仍提示成功的 Bug。 - 修复图片密钥获取在样本未就绪/选到不匹配备用样本时“扫描很多轮仍无法获取”的问题:改为等待 `*_t.dat` 就绪后再开始扫描。 ### 2025年12月15日 - **重构密钥获取逻辑**:实现 Data Key (DLL) 和 Image Key (原生扫描) 的职责分离与并行执行。 - **优化图片密钥获取**:适配 Dart 版逻辑,支持 60 秒轮询等待,允许用户后置操作(打开图片)。 - **修复与优化**:修复未登录时扫描崩溃问题;增加详细的扫描日志;优化 UI 菜单交互。 - **暂停 V3 支持**:集中资源优化 V4 体验。 ### 2025年12月14日 - 优化临时账户名称管理。 - 改进微信进程状态监控逻辑。 ## 项目概述 这是一个微信聊天记录解密工具,当前仅支持 Windows 平台。工具通过注入DLL或内存扫描的方式获取微信数据库密钥,然后解密微信聊天数据库文件。 **注意:当前版本已移除对微信 3.x 版本的支持,仅支持微信 4.x。** ## 推荐工具 > **[ChatLab](https://chatlab.fun/)** > > 一个免费、开源、本地化的,专注于分析聊天记录的应用。通过 AI Agent 和灵活的 SQL 引擎,你可以自由地拆解、查询甚至重构你的社交数据。 > > 本项目导出的 `ChatLab JSON` 格式可直接导入该工具进行深度分析。 ## 主要功能 - **密钥获取**: - **数据库密钥 (Data Key)**:通过 DLL 注入 (`wx_key.dll`) 高效获取。 - **图片密钥 (Image Key)**:通过原生内存特征扫描获取,无需 DLL 支持(适配 `img-key.dart` 逻辑)。 - **并行获取**:支持同时并行获取两种密钥,提高效率。 - **数据库解密**:解密微信加密的SQLite数据库文件。 - **可视化浏览器**:HTTP 管理界面支持直接浏览数据库、查看表内容、关键词搜索。 - **SQL 控制台**:支持直接执行 SQL 语句查询解密后的数据库。 - **标准化导出**:全面适配 ChatLab 标准化格式 (v0.0.1),支持跨平台数据分析。 - **多格式导出**:支持将聊天记录、联系人、原始数据库表数据导出为 Excel (xlsx) 或 CSV 格式。 - **图片解密**:解密微信加密的图片文件(需要图片密钥)。 - **自动监控**:监控微信数据目录,自动解密新增数据。 - **HTTP/MCP 服务**:提供本地 HTTP 服务,完整支持 MCP 协议(Model Context Protocol),便于与 AI 助手集成。 - **应用互斥**:防止程序多开,确保运行稳定性。 ## 完整使用逻辑 #### 获取数据密钥 (Data Key) 1. 启动 `chatlog_alpha.exe`。 2. 启动微信(先不要点击登录)。 3. 等待 chatlog 识别到微信进程 PID。 4. 点击微信登录。 5. 程序通过 DLL 自动捕获数据密钥。 #### 获取图片密钥 (Image Key) 1. 确保微信已登录。 2. 在 chatlog 主界面选择 **"获取图片密钥"** 选项。 3. 程序会先等待图片验证样本就绪(需要微信生成缩略图缓存文件 `*_t.dat`)。 4. **在微信中打开任意一张聊天图片**(触发缓存/密钥相关数据生成)。 5. 当 `*_t.dat` 生成后,程序会提示 "正在进行第 X 轮内存扫描... 请打开任意图片" 并开始扫描。 6. 程序自动捕获内存中的图片密钥并返回。 > 说明:不需要“很快”打开图片;只要最终打开过图片让 `*_t.dat` 生成,程序就能稳定获取图片密钥。 *注:解密数据操作会自动尝试获取两种密钥。* ## 使用说明 ### 界面操作 程序启动后会出现TUI界面,主要功能包括: 1. **获取图片密钥**:专门用于扫描内存获取图片密钥(需微信V4)。 2. **重启并获取密钥**:结束当前微信进程,重启后尝试获取密钥。 3. **解密数据**:一键解密数据库(包含自动获取 Data Key 的逻辑)。 4. **启动HTTP服务**:启动本地HTTP & MCP服务器。 5. **开启自动解密**:监控数据目录,自动解密新增数据。 6. **设置**:配置应用程序选项。 7. **切换账号**:切换当前操作的账号。 8. **退出**:退出程序。 ### 密钥获取机制详解 1. **Data Key (DLL 模式)**: - 依赖 `wx_key.dll`。 - 通过 Hook 微信关键函数获取。 - 推荐在微信启动/登录阶段获取。 2. **Image Key (原生扫描模式)**: - 不依赖 DLL,使用 Go 原生代码实现。 - 采用暴力内存扫描 + 特征匹配(32字节字母数字串)+ 验证(AES解密缩略图头)。 - **交互式获取**:支持长达 60 秒的轮询等待,允许用户在点击按钮后从容打开图片。 - **关键依赖**:验证必须使用缩略图缓存样本 `*_t.dat`(由“打开聊天图片”触发生成)。样本未就绪时会持续等待提示,而不会进行无效扫描。 - **稳定性说明**:为避免选到不匹配的备用 `.dat` 样本导致“扫描很多轮仍失败”,当前仅在检测到 `*_t.dat` 后才认为图片验证就绪并开始扫描。 ### 临时账户管理 程序支持临时账户管理,当微信未登录或重启时: - **临时账户名称**:格式为 `未登录微信_PID`。 - **状态监控**:实时监控微信进程状态变化。 - **自动切换**:微信登录后自动切换为真实账户名称。 ## 配置说明 ### 配置文件 配置文件位于用户目录下的 `.chatlog/config.json`。 ### 重要提示 1. **ffmpeg依赖**: 对dat转换一定要安装ffmpeg,并且在系统变量设置bin目录的path,否则会显式报错。 2. **权限**: 程序需要管理员权限来读取微信进程内存。 3. **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项目,具体许可证信息请参考原项目。 ## 免责声明 本项目仅供学习和研究使用,请勿用于非法用途。使用本工具产生的任何后果由使用者自行承担。