M-Tarantino/YETI-Firmware-Forensics
GitHub: M-Tarantino/YETI-Firmware-Forensics
YETI 是一个基于 Rust 的分布式固件取证编排器,通过虚拟文件系统和内存转换技术解决传统固件分析工具的单体瓶颈与低效 I/O 问题。
Stars: 0 | Forks: 0
# YETI — 固件取证
## 什么是 YETI?
YETI 是一个使用 Rust 构建的高性能固件取证编排器 — 旨在解决传统工具的“单体瓶颈”问题。YETI 不再盲目地提取所有内容,而是采用**精准提取**的方式进行操作。
### 核心概念
- **虚拟文件系统 (VFS):** 在将任何一个字节写入磁盘之前浏览固件结构。
- **动态转换:** 在内存中修复专有的供应商头信息(例如,被修改的 SquashFS 魔数字节)。
- **编排:** 将 binwalk-rs 和 backhand 无缝集成到一个统一的、支持远程操作的工作流中。
## 架构
| 层级 | 职责 |
|-------|---------------|
| **智能层** | 通过 DNA 匹配进行供应商识别,决定需要进行哪些修复 |
| **VFS 层** | 使用 `memmap2` 进行高速映射,实现对外 GB 级镜像的即时访问 |
| **分布式节点** | 服务器端进行重度解压,客户端保持轻量化 |
### 技术栈
- **语言:** Rust(零开销抽象,内存安全)
- **引擎:** Binwalk-rs, Backhand(定制化)
- **UI:** Ratatui(终端 UI)
- **策略:** 基于范围的提取,以最小化 I/O 开销
## 当前状态 (v0.2 Alpha)
基础已经奠定。核心架构已具备功能,但距离稳定发布还有很长的路要走。
### 已实现功能
- ✅ 用于精细数据访问的物理偏移量映射
- ✅ Binwalk-rs 核心作为主要发现引擎
- ✅ 基于终端 UI (TUI) 的针对单个文件的精准提取(`x` 命令)
### 待开发 / 计划中
- ⏸️ 用于外部 AI-agent 集成的无头 JSON-RPC API
- ⏸️ 针对主要品牌的自动化“供应商修复”模块
- ⏸️ 稳定性、错误处理和文档
## 为什么暂停维护?
我目前正在开发 **Projekt Helix** — 一个 x86 到 ARM 的二进制翻译器。我的全部精力都集中在这个项目上。
YETI 仍属于我的知识产权。代码按原样发布。目前没有活跃的路线图,不保证修复 bug,也不提供支持承诺。欢迎贡献代码,但可能无法及时审查或合并。
## 用法
### 前置条件
- Rust 工具链 (稳定版, >= 1.75)
- SQLite 开发库 (用于 `rusqlite`)
### 构建
```
# Clone 仓库
git clone https://github.com/M-Tarantino/YETI-Firmware-Forensics.git
cd YETI-Firmware-Forensics
# Build 项目
cargo build --release
# Generate forensic DNA 数据库
python3 yeti_dna_generator.py
```
### 运行
```
# 启动 TUI 进行交互式 firmware 分析
cargo run --release -- /path/to/firmware.bin
# 启动 forensic explorer shell(在 TUI 扫描之后)
# 在 TUI 内,按 'e' 键进入 explorer
# 启动分布式 compute 节点
cargo run --release -- --node --port 8080
# 向远程节点发送 forensic 任务
cargo run --release -- --client --target 127.0.0.1:8080 --file /path/to/firmware.bin
```
### 探索器 Shell 命令
进入取证探索器后:
| 命令 | 描述 |
|---------|-------------|
| `ls` | 列出当前路径下的文件和目录 |
| `cd ` | 进入一个目录 |
| `cd ..` | 返回到根目录 |
| `x ` | 提取单个文件(精准提取) |
| `exit` | 返回到主 TUI 界面 |
### 示例会话
```
$ cargo run --release -- tplink_archer_c7.bin
[+] YETI Forensic DNA - Analysing: tplink_archer_c7.bin
[+] System Status: Forensic Engine Active
[+] Worker Threads: 8 (Rayon Parallel)
# 按 'e' 键进入 explorer
yeti / > ls
DIR 0 squashfs-root
FIL 2048 u-boot.bin
FIL 4096 kernel.lzma
yeti / > cd squashfs-root
yeti /squashfs-root > ls
FIL 1024 etc/passwd
FIL 2048 bin/busybox
DIR 0 usr/lib
yeti /squashfs-root > x etc/passwd
[+] Extracted etc/passwd (1024 bytes) -> ./extracted/etc/passwd
yeti /squashfs-root > exit
```
## 许可证
### 非商业用途
- 允许在**署名** (Namensnennung) 的前提下免费使用
- 允许修改,但必须在相同的许可条款下发布
- 适用于研究、教育、兴趣爱好项目以及非营利性安全研究
### 商业用途
- 未经另行约定,**不允许**商业使用
- 如有商业意向:请联系我获取个人授权
代码仍属于我的知识产权。本许可证不转移版权。
完整法律文本请查看 [LICENSE](LICENSE)。
## 联系方式
对商业许可证或深入探讨架构感兴趣吗?
- **技术主题:** VFS Inode 映射、客户端/服务器二进制协议、供应商 DNA 检测
- **许可证咨询:** muneeb.tarantino.job@gmail.com
**作者:** Muneeb Tarantino (M-Tarantino)
**GitHub:** [https://github.com/M-Tarantino/YETI-Firmware-Forensics](https://github.com/M-Tarantino/YETI-Firmware-Forensics)
**所在地:** Deutschland
标签:Rust, 内存解析, 分布式架构, 可视化界面, 固件取证, 文件提取, 终端UI, 网络流量审计, 逆向分析, 逆向工具, 通知系统