jarbozhang/bit-sender

GitHub: jarbozhang/bit-sender

一款基于 Rust + Tauri 的跨平台原生桌面应用,提供图形界面下的网络数据包逐字段构造、发送与捕获功能。

Stars: 2 | Forks: 0

# BitSender **跨平台网络数据包构造、发送与捕获。单一原生 GUI。** 逐字段构建原始 L2 帧,以链路速率发送,并监听网络回包,一切尽在一个快速的桌面应用中完成。Rust 通过 libpcap/Npcap 构建和发送字节;React 前端绝不对任何字段进行猜测。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3896cd68cb191416.svg)](https://github.com/jarbozhang/bit-sender/actions/workflows/ci.yml) [![最新发布](https://img.shields.io/github/v/release/jarbozhang/bit-sender?display_name=tag)](https://github.com/jarbozhang/bit-sender/releases/latest) ![平台](https://img.shields.io/badge/platforms-macOS%20%7C%20Windows%20%7C%20Linux-blue) ![使用 Tauri 构建](https://img.shields.io/badge/built%20with-Tauri%202-24C8B8) [中文文档](./README.zh-CN.md) · [下载](../../releases/latest) · [重构故事](./docs/blog/rewriting-bitsender-with-claude.md) BitSender: live layer-colored hex scope, protocol switching, and dark/light themes
## 为什么选择 BitSender 大多数数据包工具只让你做一件事。Wireshark 只能捕获但不能构造。Scapy 可以构造但你得写 Python。Colasoft Packet Builder 可以构造但仅限 Windows 且已过时。hping 仅支持 CLI。 BitSender 在所有三大平台上通过 GUI 同时实现这两项功能: - **逐字段构造任何 L2 帧** — Ethernet II、ARP、IPv4、IPv6、TCP、UDP、ICMP。真实的校验和(IP / TCP-UDP 伪首部 / ICMP,符合 RFC 1071 和 768),或者你可以手动设置以故意伪造格式错误的数据包。 - **实时十六进制示波器** — 每个字节在输入时都会根据协议层着色(Ethernet / IP / 传输层 / payload)。支持导入和导出 Wireshark 风格的十六进制转储。 - **发送单个,或泛洪发送** — 测试发送单个帧,或按照精确的停止条件(数量、持续时间或手动)以设定速率批量发送。 - **带有真实统计数据的嗅探** — 每秒数据包数 (pps) 是根据 pcap header 时间戳计算的最后一个*完整*秒内的统计,而不是一个会漂移的不可靠计数器。(v1 无法正确计算 pps。v2 可以。) - **序列与响应监控** — 发射有序、定时的数据包序列,或发送 ICMP/ARP 探测并测量 RTT。 - **模板、深色/浅色主题、英文/中文** — 全部持久化保存。 ## 安装 从 [Releases](../../releases/latest) 获取构建版本。 **macOS** — 安装后移除隔离标志(构建版本尚未经过公证): ``` xattr -cr /Applications/BitSender.app ``` 发送和捕获需要 root 权限: ``` sudo /Applications/BitSender.app/Contents/MacOS/BitSender ``` **Windows** — 首先安装 [Npcap](https://npcap.com/#download)(勾选“WinPcap API compatible mode”)。以管理员身份运行以发送或捕获。 **Linux** — 需要 `libpcap` 和 webkit2gtk 运行时库。使用 `sudo` 运行或授予 `CAP_NET_RAW`。 ## 故事:在一个周末内重构,有据可查 v2 是一次完全的从头重写,在一个使用 [Claude Code](https://claude.com/claude-code)(Fable 5 模型)的紧张会议中完成。有趣的部分不在于速度。而在于这*不是*一个随便拼凑的玩具: - Rust 中强类型的 `PacketSpec` 由 [tauri-specta](https://github.com/specta-rs/tauri-specta) 导出到 TypeScript,因此任何字段或类型不匹配都会在**编译期**失败。v1 的前端↔后端契约是一个全靠运气和静默默认值支撑的 `HashMap`。v2 不会发生偏移。 - **56 个黄金字节测试**针对手动推导的 RFC 参考帧断言每个协议的精确字节。此外还有针对 UI 的 Playwright e2e 测试,以及在所有四个平台目标上全部通过的 CI。 完整文章:[我如何在一个周末用 Claude Code 重写 BitSender](./docs/blog/rewriting-bitsender-with-claude.md)。 ## 开发 Node 22+、pnpm 11+、Rust 稳定版。 ``` pnpm install pnpm tauri dev # full app (send/capture need sudo) pnpm dev # frontend only, port 1420 pnpm tauri build # release bundle → src-tauri/target/release/bundle/ ``` 测试矩阵: | 命令 | 覆盖范围 | |---|---| | `pnpm typecheck` | TypeScript 编译期契约检查 | | `pnpm test` | vitest 单元测试 | | `pnpm test:e2e` | Playwright UI 流(模拟 Tauri IPC) | | `cd src-tauri && cargo test` | Rust 黄金字节测试 + 重新生成 `bindings.ts` | | `cd src-tauri && cargo clippy --all-targets -- -D warnings` | 零警告门禁 | 字节级的正确性由 cargo 黄金测试守护;UI 流由 e2e 守护。真实的链路上发送/捕获需要具有特权真实机器,并由人工验证。 ## 贡献 欢迎提交 Issue 和 PR,特别是新协议和捕获/分析功能。有关此 README 的中文版本,请参见[中文文档](./README.zh-CN.md)。
标签:Rust, Tauri, 可视化界面, 数据包构造, 桌面应用, 特征检测, 网络工具, 网络抓包, 网络流量审计, 通知系统