Files
chatlog_alpha/README.md
lx1056758714-glitch 367fcc2e5a v1.0.0 Update release artifact path and add binary archive
v1.0.0
- **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-18 22:05:45 +08:00

174 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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项目具体许可证信息请参考原项目。
## 免责声明
本项目仅供学习和研究使用,请勿用于非法用途。使用本工具产生的任何后果由使用者自行承担。