Venin-Client-Systems/venin-dfir
GitHub: Venin-Client-Systems/venin-dfir
一款 CLI 优先的数字取证工具包,专注于证据解析、采集和时间线重建。
Stars: 0 | Forks: 0
# VENIN DFIR
VENIN DFIR 是一款以命令行界面为核心的数字取证工具包,用于支持证据采集、解析、时间线重建和可重复的调查自动化。
本项目有意不以图形用户界面为核心。它遵循小型工具理念:每个解析器应专注于一类,生成确定性的结构化输出,并能与共享的时间线模型集成。
## 架构
选定的技术栈为 Rust + Python:
- Rust 负责核心解析器、命令行界面、注册表、时间戳标准化、哈希计算、数据导出和时间线生成。
- Python 专为分析师端工作流辅助、笔记本、验证以及对 VENIN JSON/CSV 输出进行可重复的后处理而保留。
关于 Rust、Go 与 Python 的技术选型决策详情,请参阅 [ARCHITECTURE.md](ARCHITECTURE.md)。
## 当前可用的解析器
`browser_history.chromium` 是首个实现的解析器。
它解析 Chromium 系列浏览器的 `History` SQLite 数据库,并提取以下信息:
- URL
- 标题
- 访问次数
- 输入次数
- 隐藏标志
- 原始 Chromium 时间戳
- 标准化的 UTC 时间戳
- 当存在 `visits` 表时,生成访问级别的的时间线事件
支持的浏览器系列包括使用 Chromium 架构的 Chrome、Chromium、Edge 和 Brave 的历史记录数据库。
## 构建
```
cd /Users/georgeatkinson/Developer/digital-forensics/venin-dfir
cargo build --workspace
```
在 macOS 上,链接了原生依赖的 Rust 构建需要接受 Xcode 命令行工具许可协议。
## 运行测试
```
cargo test --workspace
```
## CLI 示例
列出已注册的工具:
```
cargo venin -- registry list
```
解析一个 Chromium 历史记录数据库:
```
cargo venin -- parse chrome-history \
--input datasets/samples/chromium/History \
--evidence-id CASE001-EV001 \
--format both \
--output-dir output
```
从标准化的时间线 JSON 构建统一的时间线:
```
cargo venin -- timeline build \
--input output/timelines/chromium_history.timeline.json \
--format both \
--output-dir output
```
## 仓库结构
- `cmd/venin-cli` - 命令行入口点。
- `core/venin-core` - 工具注册表和共享工具元数据。
- `parsers/venin-parsers` - 取证解析器和解析器框架。
- `timeline/venin-timeline` - 标准化事件模型及 JSON/CSV 导出。
- `shared/venin-shared` - 时间戳、哈希和文件标识实用工具。
- `acquisition/` - 采集计划框架。
- `windows/`, `ios/`, `android/`, `mobile/` - 平台工作流 crate 及未来扩展区。
- `artifacts/` - 输出模式定义。
- `cases/` - 取证案例工作区模板。
- `datasets/` 和 `testdata/` - 合成测试数据和解析器验证输入。
- `reports/` - Markdown 报告模板。
- `tools/python` - 分析师端的 Python 辅助工具,用于处理 VENIN 导出。
## 案例工作区
使用以下命令创建案例目录:
```
scripts/new_case.sh CASE002
```
案例目录布局:
```
cases/CASE002/
evidence/
acquisitions/
parsed/
timelines/
reports/
notes/
```
## 添加解析器
1. 在 `parsers/venin-parsers/src` 下添加一个解析器模块。
2. 使用 `serde` 定义类型化输出记录。
3. 在标准化值旁边保留原始值。
4. 为时间记录生成 `TimelineEvent` 值。
5. 在 `register_builtin_tools` 中添加元数据。
6. 添加确定性的测试夹具和单元测试。
7. 在 `TOOL_REGISTRY.md` 中记录该解析器。
## 许可证
推荐采用双重许可 `MIT OR Apache-2.0`,这与常见的 Rust 开源实践一致,并为个人和组织明确了贡献条款。
标签:Chromium解析, DFIR工具, Python, Rust, SQLite解析, 二进制发布, 取证自动化, 可视化界面, 小工具哲学, 工件解析, 开源工具, 批量测试, 数字取证, 数据库解析, 数据提取, 无后门, 时间线重建, 浏览器历史, 结构化输出, 网络流量审计, 自动化脚本, 证据获取, 跨平台工具, 轻量级工具, 逆向工具, 通知系统, 重复性调查