HendrikReh/fireshark
GitHub: HendrikReh/fireshark
一个用 Rust 编写的分阶段数据包分析器,采用库优先策略构建可复用的协议解码核心。
Stars: 0 | Forks: 0
# Fireshark
Fireshark 是一个受 Wireshark 启发的数据包分析器,使用 Rust 编写,并采用分阶段的方式进行构建,而非一开始就追求“大而全”的克隆。
该项目有意采用“库优先”的策略。初期的目标是构建一个清晰的捕获和解码核心,以便后续支持多种前端,而不是直接跳入完整的桌面 UI 开发。
## Status (状态)
Fireshark 目前处于 `crawl`(爬行)阶段。
目前已实现的功能:
- 读取 `pcap` 和 `pcapng` 捕获文件
- 解码 Ethernet, ARP, IPv4, IPv6, TCP, UDP 和 ICMP
- 通过可复用的解码 pipeline 构建结构化数据包
- 通过最小化的 CLI 打印数据包摘要
- 使用基于 fixture 的测试验证行为
尚不存在的功能:
- 实时数据包捕获
- GUI 或 TUI 数据包检查
- 显示过滤语言
- 流追踪或重组
- 高级统计
## Why Phases (为何分阶段)
项目分为三个阶段,以便在涉及面扩大之前,让架构基于真实的数据包数据得到夯实:
- `crawl` (爬行)
离线捕获解析,基础协议解剖,以及最小化 CLI
- `walk` (行走)
实时捕获后端,类型化过滤原语,以及会话标识
- `run` (奔跑)
面向分析师的工作流,如数据包视图、显示过滤器、流追踪和统计
这保持了早期工作的微小、可测试,且不易过度设计。
## Workspace Layout (工作空间布局)
- `crates/fireshark-core`
核心域类型、摘要和通用解码 pipeline
- `crates/fireshark-file`
`pcap` 和 `pcapng` 摄入
- `crates/fireshark-dissectors`
Ethernet, ARP, IPv4, IPv6, TCP, UDP 和 ICMP 的协议解码
- `crates/fireshark-cli`
用于演练库堆栈的精简 CLI
- `fixtures/`
测试套件使用的手工制作的二进制 fixture
- `docs/plans/`
阶段设计和实现规划文档
## Quick Start (快速开始)
要求:
- 已安装 Rust 工具链
- `cargo` 在你的路径中可用
- `just` 在你的路径中可用
针对 smoke fixture 运行 summary 命令:
```
just summary
```
示例输出:
```
1 TCP 192.0.2.10:51514 -> 198.51.100.20:443 54
```
Cargo 等效命令:
```
cargo run -p fireshark-cli -- summary fixtures/smoke/minimal.pcap
```
## Development (开发)
运行完整的本地验证流程:
```
just check
```
运行格式化:
```
just fmt
```
运行 Lint 检查:
```
just clippy
```
运行完整的测试套件:
```
just test
```
Cargo 等效命令:
```
cargo fmt --all
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
```
## Design Direction (设计方向)
Fireshark 围绕稳定的数据包分析核心构建,而非围绕特定的前端。
当前设计规则:
- 文件解析与协议解剖保持分离
- 解码倾向于显式的、类型化的层,而非临时的字节检查
- API 应支持流式/迭代,而非强制加载完整文件
- 功能以垂直切片形式添加,而非作为大型投机性框架
## Roadmap (路线图)
### Crawl (爬行)
- 支持离线 `pcap` 和 `pcapng`
- 建立数据包模型和解码 pipeline
- 用最小化的 CLI 验证架构
### Walk (行走)
- 添加实时捕获抽象和一个实际的后端
- 引入类型化的过滤/查询 API
- 启动会话和流标识原语
### Run (奔跑)
- 构建真实的分析工作流
- 增加更丰富的数据包检查 UX
- 支持显示过滤、流追踪和基本统计
## Repository Notes (仓库说明)
本仓库是公开的,但仍处于早期阶段。当前的实现有意收窄范围:在现阶段,正确性、分层和可测试性比协议广度更重要。
标签:CLI 工具, DNS解析, IPv4/IPv6, Linux 工具, PCAP 解析, Rust, TCP/UDP, Wireshark 替代品, 二进制解析, 内核驱动, 可视化界面, 库优先, 开源项目, 文档结构分析, 离线分析, 网络协议, 网络嗅探, 网络安全, 网络流量审计, 通知系统, 隐私保护