SecurityRonin/chat4n6

GitHub: SecurityRonin/chat4n6

一款专为 Android WhatsApp 设计的深度取证工具,通过八层恢复技术从 SQLite 各级残留中提取商业工具遗漏的已删除消息。

Stars: 1 | Forks: 0

# chat4n6 当嫌疑人删除一条 WhatsApp 消息时,数据很少会彻底消失。它会残留在 SQLite 自由列表、预写日志、回滚日志、应用内搜索索引、页内间隙以及未分配的磁盘空间中——如果你知道去哪里找,这些数据通常是完整且可恢复的。 `chat4n6` 是一款免费、开源的取证工具,能够从 Android 文件系统镜像中系统地恢复这些证据。它深入每个 WhatsApp 数据库的**八个层级**,用证据来源和置信度评分标记每条恢复的记录,并通过单个命令生成法庭可用的 HTML 报告。 **无需 SQLite C 库。无需 Python。无运行时依赖。单个二进制文件。** ## 适用人群 ### 事件响应团队 你正处于内部威胁调查的头 72 小时内。一个设备镜像摆在了你的桌上。你需要快速获取聊天记录,以便在证据消失前了解范围并识别其他受损方。 ``` chat4n6 run --input ./acquired-image/ --output ./triage-report --no-unalloc ``` 第 1-7 层可在几秒钟内完成。打开 `triage-report/index.html`,你就能看到实时消息、从 WAL/自由列表/日志/FTS 恢复的已删除消息,且所有消息都标记了证据来源。第 8 层(未分配空间挖掘)是可选的,以耗时为代价换取彻底性。 ### 数字取证从业者 你需要超越商业工具深度的、经得起推敲且可复现的证据恢复。`chat4n6` 提供: - **八个恢复层级**,具有完整溯源——每条记录都标记为 `[LIVE]`、`[WAL-PENDING]`、`[FREELIST]`、`[FTS-ONLY]`、`[CARVED-UNALLOC 94%]` 等。 - **置信度评分**——针对挖掘记录,基于与实时记录的 Schema 签名频率分析得出。 - **SHA-256 去重**——跨所有层级,无重复计数,无虚高统计。 - **验证命令**——对于每条挖掘发现,报告包含 `sqlite3` 和 `xxd` Shell 命令,以便在报告的偏移量处独立验证原始十六进制数据。 - **WAL 增量分析**——WAL 与主数据库状态之间的行级比较(Added / Deleted / Modified)。 ### 律师事务所与清算人 你不需要成为取证检查员。你需要快速了解现存证据,以便就资源分配、法律策略以及是否聘请专家做出明智决策。 `chat4n6` 为你提供证据全景的初筛视图: - **有多少条消息?** 实时计数与已删除计数对比,按聊天细分。 - **删除了什么?** 恢复的消息与实时消息并排显示,清晰标记。 - **可能还有多少?** 带有置信度评分的挖掘记录告诉你,更深入的分析是否可能产生额外证据。 - **规模与严重性**——HTML 报告是自包含的,可在任何浏览器中阅读,并可立即与法律顾问共享。 **重要提示:** 挖掘和恢复的记录带有固有的不确定性。误报和漏报皆有可能。初筛报告可帮助你评估案件是否需要全面的取证分析——它不能替代在诉讼中出示证据时的专家鉴定。 ## 恢复深度 大多数取证工具只读取 SQLite 公开提供的数据。`chat4n6` 实施了八个恢复层级,借鉴了经同行评审的技术(bring2lite、FQLite、Sanderson 等人): | 层级 | 来源 | 发现内容 | 商业工具支持情况 | |-------|--------|---------------|-----------------| | 1 | Live B-tree | 活动消息、通话、联系人 | 所有工具 | | 2 | WAL replay | 未提交事务、待写入 | 部分工具 | | 3 | WAL delta | 行级 Added/Deleted/Modified 分析 | 极少 | | 4 | Freelist | 可重用页面上的已删除行 | 极少 | | 5 | FTS index | 被搜索后删除的消息 | 几乎没有 | | 6 | Intra-page gaps | 页面内未分配空间中的记录 | 几乎没有 | | 7 | Rollback journal | 修改前的页面快照 | 几乎没有 | | 8 | Unallocated carving | 带置信度评分的 Schema 感知启发式挖掘 | 有时(无评分) | 每条记录都带有证据来源标签。挖掘记录包含置信度百分比:一条 94% 的记录意味着它与该表中 94% 的实时记录的序列类型模式相匹配。 ## 快速开始 ``` # 安装(需要 Rust 1.75+) cargo install chat4n6 # 对提取的 Android 文件系统运行完整分析 chat4n6 run --input /path/to/android/root --output ./report # 带时区和案件元数据 chat4n6 run \ --input /path/to/android/root \ --output ./case-2026-001 \ --case-name "Case 2026-001" \ --timezone "Asia/Manila" # 快速甄别 — 跳过未分配空间雕刻(仅限 1-7 层) chat4n6 run --input ./image/ --output ./triage --no-unalloc # 来自 Passware Kit Mobile 的 DAR 归档 chat4n6 run --input ./userdata.1.dar --output ./report # iOS 备份(iTunes 风格,带 Manifest.db) chat4n6 run --input ./ios-backup-dir/ --output ./report # 加密的 WhatsApp 数据库 chat4n6 run --input ./image/ --output ./report --key-file ./key ``` ## 输入格式 `chat4n6` 自动检测输入格式: | 格式 | 来源 | 获取方式 | |--------|--------|----------------| | **Plaintext directory** | 提取的 Android 文件系统树 | 任何保留目录结构的提取工具 | | **DAR archive** (`.dar`) | Passware Kit Mobile,其他取证工具 | 直接从取证软件获取 | | **iOS backup** | 带有 `Manifest.db` 的 iTunes 风格备份 | `libimobiledevice`、iTunes、Finder 备份 | WhatsApp 数据库预期位于: ``` /data/data/com.whatsapp/databases/ ``` 如果 WhatsApp 数据库已加密(`.crypt14`、`.crypt15`),请提供设备上 `/data/data/com.whatsapp/files/key` 的密钥文件。 ## 输出 ``` report/ ├── index.html ← Case dashboard: chat list, counts, evidence summary ├── chat__.html ← Paginated conversations (500 messages/page) ├── calls.html ← Full call log (audio + video) ├── deleted.html ← All non-LIVE records across every chat ├── gallery.html ← Media references and thumbnails ├── carve-results.json ← Machine-readable output for scripting / ingestion └── manifest.json ← Report metadata and generation parameters ``` 报告为静态 HTML——无 JavaScript 依赖,无外部资源。可离线打开、归档、打印或附在法律文件中。 ## 证据标签 每条消息和通话记录都带有溯源标签: | 标签 | 层级 | 含义 | |-----|-------|---------| | `[LIVE]` | 1 | 存在于活动 B-tree 中 | | `[WAL-PENDING]` | 2 | 在 WAL 中,尚未检查点写入主数据库 | | `[WAL-DELETED]` | 3 | 存在于主数据库但被 WAL 事务移除 | | `[WAL-HISTORIC]` | 3 | 在 WAL 中但已被后续帧取代 | | `[FREELIST]` | 4 | 在自由列表页面上——已删除但空间尚未被重用 | | `[FTS-ONLY]` | 5 | 在 WhatsApp 的搜索索引中,但消息表中不存在 | | `[CARVED-INTRA-PAGE 87%]` | 6 | 在页内间隙中发现,置信度为 87% | | `[JOURNAL]` | 7 | 从回滚日志的修改前快照中恢复 | | `[CARVED-UNALLOC 94%]` | 8 | 从未分配空间挖掘,置信度为 94% | | `[CARVED-DB]` | 8 | 来自从未分配空间重建的数据库 | ## 局限性 - **Android 为主。** iOS 备份支持已可用,但不如 Android 成熟。 - **仅限 WhatsApp。** Signal 和 Telegram 插件已搭建框架,但尚未实现。 - **加密数据库**需要原始密钥文件。`chat4n6` 不执行密钥恢复。 - **恢复取决于时机。** 在获取前已被覆盖的记录无法被任何工具恢复。 - **挖掘记录是概率性的。** 置信度分数反映 Schema 模式匹配质量,而非语义正确性。误报是可能的,尤其是在低于 80% 置信度时。初筛发现应在作为证据出示前由合格检查员进行验证。 ## 从源码构建 ``` git clone https://github.com/SecurityRonin/chat4n6.git cd chat4n6 cargo build --release ./target/release/chat4n6 --help ``` 无系统依赖。纯 Rust——无 SQLite C 库,无 Python,无 JVM。 需要 Rust 1.75 或更高版本。 适用于 Windows 的**预构建二进制文件**可从 [GitHub Actions artifacts](https://github.com/SecurityRonin/chat4n6/actions)(最新的 `build-windows` 运行)获取。 ## 测试覆盖率 工作区共有 573 个测试。SQLite 取证引擎(`chat4n6-sqlite-forensics`)在 22 个源模块中拥有 98.77% 的行覆盖率和 99.51% 的函数覆盖率。其余未覆盖行经证明为不可达的防御性保护代码。 ``` cargo test # Run all tests cargo llvm-cov test # Run with coverage report (requires cargo-llvm-cov) ``` ## 贡献 欢迎提交 Issue 和 Pull Request。请参阅 `docs/` 以了解设计规范和实施计划。 ## 许可证 MIT——请参阅 [LICENSE](LICENSE)。
标签:Golang, Incident Response, SQLite Forensics, SQLite恢复, WAL日志分析, WhatsApp取证, 反取证对抗, 可视化界面, 司法鉴定, 域渗透, 安全编程, 安卓取证, 库, 应急响应, 开源取证工具, 数字取证, 数据恢复, 数据雕刻, 无依赖工具, 电子数据取证, 痕迹提取, 目录枚举, 移动安全, 聊天记录恢复, 自动化脚本, 通知系统