1046prt/byteplay

GitHub: 1046prt/byteplay

一款提供完整捕获、编辑、重放往返能力的原始 TCP/UDP 数据包可视化分析与测试工具。

Stars: 0 | Forks: 0

# byteplay **多平台网络数据包分析器与重放器** —— 捕获、编辑和重放原始 TCP/UDP 数据包,以测试服务器弹性。 ## 为什么选择 byteplay? | 工具 | 局限性 | byteplay 的优势 | |---|---|---| | Wireshark | 仅支持捕获/分析,不支持编辑后重发 | 完整的往返流程:捕获 → 编辑 → 重放 | | Burp Suite | 仅支持 HTTP/HTTPS | 协议无关(原始 TCP/UDP,任意 payload) | | Scapy(可编写脚本) | 无 GUI,学习曲线陡峭 | 简洁的 GUI,无需编写任何脚本 | | Postman | 仅限应用层 (REST) | 工作在应用层以下 | | hping3/nc | 仅支持 CLI,无持久化数据包库 | 已保存的数据包库 + diffing + 重放历史记录 | **核心差异化特性:** - **字节级十六进制 diffing** — 原始数据包和已编辑数据包之间的可视化差异 - **重放序列** — 将数据包链接为脚本化的会话重放 - **变异模糊测试** — 随机翻转字节,记录崩溃/超时 - **跨平台原生性能** — 基于 Tauri 的 Rust 捕获核心 - **本地优先,零遥测** — 数据绝不会离开您的设备 ## 架构 ``` ┌─────────────────────────────────────────────────┐ │ Frontend (React + TypeScript) │ │ - Virtualized packet list │ │ - Hex/ASCII dual-pane viewer │ │ - Replay console + response viewer │ │ - Sequence editor + fuzzer dashboard │ └───────────────────▲──────────────────┬──────────┘ │ Tauri IPC │ ┌───────────────────┴──────────────────▼──────────┐ │ Capture Engine (Rust) │ │ pnet: raw socket capture + protocol parsing │ │ socket2: TCP/UDP raw replay │ │ rusqlite: local packet library + history │ │ Multi-threaded ring buffer, non-blocking UI │ └─────────────────────────────────────────────────┘ ``` ## 技术栈 | 层级 | 技术 | 原因 | |---|---|---| | 捕获核心 | Rust + `pnet` | 内存安全的原始 socket 访问,接近 C 的性能 | | 应用外壳 | **Tauri 2** | Rust 后端 + WebView 前端,二进制文件体积小 | | 前端 | React 19 + TypeScript + Tailwind v4 | 快速迭代,虚拟化列表 | | 十六进制查看器 | 自定义组件 | 高性能双窗格渲染 | | 存储 | 通过 `rusqlite` 使用 SQLite | 简单、便携、无需服务器 | | 重放 | `socket2` crate | 精确的 TCP/UDP 控制 | ## 项目结构 ``` byteplay/ ├── src-tauri/ # Rust backend │ ├── src/ │ │ ├── capture.rs # Packet capture engine (pnet) │ │ ├── parser.rs # Ethernet/IP/TCP/UDP parsing │ │ ├── replay.rs # TCP/UDP replay + fuzzing │ │ ├── storage.rs # SQLite + PCAP/JSON export │ │ ├── lib.rs # Tauri commands & state │ │ └── main.rs # Entry point │ └── Cargo.toml ├── src/ # React frontend │ ├── components/ │ │ ├── Sidebar.tsx │ │ ├── Header.tsx │ │ ├── CaptureView.tsx │ │ ├── PacketList.tsx │ │ ├── PacketDetail.tsx │ │ ├── HexViewer.tsx │ │ ├── LibraryView.tsx │ │ ├── ReplayView.tsx │ │ ├── SequenceView.tsx │ │ └── FuzzerView.tsx │ ├── App.tsx │ ├── main.tsx │ ├── commands.ts # Tauri IPC wrappers │ ├── types.ts # Shared TypeScript types │ └── style.css ├── index.html ├── vite.config.ts ├── LICENSE └── README.md ``` ## 设置与开发 ### 前置条件 - **Node.js** 18+ 和 npm - **Rust** 工具链(通过 [rustup](https://rustup.rs/)) - **平台特定要求:** - **Windows:** 包含“C++ build tools”工作负载的 [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) + [Npcap](https://npcap.com/) - **macOS:** Xcode Command Line Tools (`xcode-select --install`) + [Homebrew libpcap](https://formulae.brew.sh/formula/libpcap) (`brew install libpcap`) - **Linux:** `sudo apt install libpcap-dev` ### 安装依赖 ``` # Frontend npm install # Rust backend (from src-tauri/) cd src-tauri && cargo build ``` ### 开发 ``` # 同时启动 frontend dev server 和 Tauri app npm run tauri dev ``` ### 构建 ``` npm run tauri build ``` ## 安全与伦理 此工具涉及原始 socket 和数据包构造。请注意: - **默认绑定**:仅针对 `localhost` / 私有网络范围 - **外部目标**:需要显式选择开启(`Allow external targets` 复选框) - **审计日志**:每次重放操作都会在本地记录时间戳、目标和 payload 哈希 - **许可证**:MIT —— “仅限用于您拥有或获得明确授权进行测试的系统” ## 已知局限 - **Windows 上需要 Npcap**:数据包捕获需要安装 Npcap(或 WinPcap) - **无 TLS 解密**:此工具在原始 socket 层面运行;TLS 是不透明的 - **无 pcap 注入**:捕获使用 pnet 的数据链路通道,而非原始 pcap 注入 - **单接口捕获**:一次只能进行一个捕获会话 ## 贡献 欢迎贡献!请在 [GitHub](https://github.com/1046prt/byteplay) 上开启 issue 或 PR。 ## 许可证 [MIT](LICENSE)
标签:Elastic Stack, Rust, SNI设置, Tauri, 协议分析, 可视化界面, 权限提升, 流量重放, 网络抓包, 网络流量审计, 自动化攻击