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 替代品, 二进制解析, 内核驱动, 可视化界面, 库优先, 开源项目, 文档结构分析, 离线分析, 网络协议, 网络嗅探, 网络安全, 网络流量审计, 通知系统, 隐私保护