# chatlog **Repository Path**: vcdplus/chatlog ## Basic Information - **Project Name**: chatlog - **Description**: 绿泡泡的记录分析工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-23 - **Last Updated**: 2025-12-27 ## 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 ## 更新日志 ### 2025年12月18日 - **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` 工具:专项搜索聊天记录中发送的共享文件元数据。 - **系统底层优化**: - **唯一消息 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。** ## 主要功能 - **密钥获取**: - **数据库密钥 (Data Key)**:通过 DLL 注入 (`wx_key.dll`) 高效获取。 - **图片密钥 (Image Key)**:通过原生内存特征扫描获取,无需 DLL 支持(适配 `img-key.dart` 逻辑)。 - **并行获取**:支持同时并行获取两种密钥,提高效率。 - **数据库解密**:解密微信加密的SQLite数据库文件。 - **图片解密**:解密微信加密的图片文件(需要图片密钥)。 - **自动监控**:监控微信数据目录,自动解密新增数据。 - **HTTP服务**:提供本地HTTP服务,支持MCP协议。 ## 完整使用逻辑 #### 获取数据密钥 (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项目,具体许可证信息请参考原项目。 ## 免责声明 本项目仅供学习和研究使用,请勿用于非法用途。使用本工具产生的任何后果由使用者自行承担。