Wired-Square/WireTAP

GitHub: Wired-Square/WireTAP

WireTAP 是一款基于 React 和 Tauri 构建的跨平台工具,用于对 CAN bus、MODBUS 和串口等帧协议进行捕获、解码和逆向工程分析。

Stars: 16 | Forks: 2

# WireTAP 一款现代的跨平台工具,用于逆向工程基于帧的协议,如 CAN bus、MODBUS 和 serial。 前身为 CANdor。 ## 功能特性 - **帧发现** - 从多个数据源捕获和分析 CAN 帧 - **信号解码** - 使用基于 TOML 的目录定义解码 CAN 信号 - **目录编辑器** - 用于创建和编辑 CAN 帧/信号目录的可视化编辑器 - **帧传输** - 支持重复/调度发送 CAN 帧 - **多协议支持** - CAN、CAN FD、serial 协议、Modbus ## 文档 有关详细文档,请参见 [Wiki](../../wiki): - [安装](../../wiki/Installation) - 下载和设置说明 - [入门指南](../../wiki/Home) - 概述和快速入门指南 - [支持的硬件](../../wiki/Supported-Hardware) - 兼容的 CAN 接口 - [CANable 设置](../../wiki/CANable-Setup) - 固件刷写指南 ## 支持的硬件 | 设备 | 协议 | 平台 | |--------|----------|----------| | ESP32-RET, M2RET, CANDue | GVRET (USB/TCP) | 全部 | | CANable, CANable Pro | gs_usb | 全部 | | CANable, CANable Pro | slcan | 全部 | | 原生 CAN 接口 | SocketCAN | Linux | ### CANable/CANable Pro: gs_usb 与 slcan CANable 和 CANable Pro 设备支持两种固件选项,它们决定了设备将使用哪种协议: - **gs_usb** (candleLight 固件) — 设备使用 gs_usb 协议将其自身呈现为原生 USB CAN 适配器。主机直接通过 USB 使用原始数据包进行通信,无需涉及串口。WireTAP 通过 [nusb](https://github.com/kevinmehall/nusb)(一个跨平台的用户态 USB 库)与设备进行通信。 - **slcan** (串行/LAWICEL 固件) — 设备显示为虚拟串口。CAN 帧使用 LAWICEL/slcan 协议以 ASCII 文本命令的形式在串行链路上进行交换。 **推荐使用 gs_usb 协议**,原因如下: 1. **更高的吞吐量** — 二进制 USB 传输避免了每个帧的 ASCII 编码/解码开销,因此 gs_usb 能够在不丢帧的情况下维持更高的总线负载。 2. **硬件时间戳** — gs_usb 设备可以提供硬件级别的时间戳,提供比基于串口的时间戳更精确的帧计时。 3. **无需串口配置** — 不会出现波特率、流控制或 COM 端口选择错误的问题。设备通过 USB 自动检测。 4. **CAN FD 支持** — 带有 candleLight 固件的 CANable Pro 通过 gs_usb 原生支持 CAN FD。slcan 没有标准的 CAN FD 扩展。 5. **跨平台免驱动** — WireTAP 的 nusb 集成意味着 gs_usb 可以在 macOS、Windows 和 Linux 上运行,而无需安装特定平台的驱动程序。在 Linux 上,gs_usb 设备也会显示为原生 SocketCAN 接口。 要使用 gs_usb,请使用 [candleLight 固件](https://github.com/candle-usb/candleLight_fw) 刷写您的 CANable。刷写说明请参见 [CANable 设置](../../wiki/CANable-Setup) wiki 页面。 ## 数据源 - 实时 CAN 硬件 (GVRET, slcan, gs_usb, SocketCAN) - PostgreSQL 数据库(带有速度控制的历史重放) - CSV 文件导入 - 内存缓冲区重放 ## 工具 ### [gs_usb_cli](tools/gs_usb_cli/) 一款用于 gs_usb/candleLight CAN 适配器的诊断 CLI。绕过 WireTAP UI 提供直接的 USB 级别控制,用于诊断帧丢失和协议问题。支持设备发现、能力探测、USB 拓扑检查、带有每次传输诊断的帧接收以及帧传输。 适用于 macOS 和 Windows。在 Linux 上,请使用 SocketCAN 工具(`candump`、`cansend`)。 构建和使用说明请参见 [tools/gs_usb_cli/README.md](tools/gs_usb_cli/README.md)。 ### [WireTAP 服务器](tools/wiretap-server/) 一款适用于 Linux 的兼容 GVRET 的 TCP 服务器,可将 SocketCAN 接口桥接到 TCP 客户端。部署在 Raspberry Pi 或任何带有 CAN 硬件的 Linux 系统上,用于: - 通过网络将实时 CAN 数据流式传输到 WireTAP 桌面应用程序 - 可选择将所有帧记录到 PostgreSQL 以进行历史分析 - 支持多个 CAN 接口和 CAN FD 设置说明请参见 [tools/wiretap-server/README.md](tools/wiretap-server/README.md)。 ## 技术栈 - **前端**: React 19、TypeScript、Vite、Zustand、Tailwind CSS - **后端**: Tauri 2 (Rust) - **UI**: Dockview 面板、Radix UI、Lucide 图标 ## 开发 ``` # 安装依赖 npm install # 运行测试 npm run test:watch # 以开发模式运行 npm run tauri dev # 为生产环境构建 npm run tauri build # 为生产环境构建(含 dev tools,强制执行 CSP,可访问 console) npm run tauri:build:debug # 清理构建产物 rm -rf node_modules/.vite dist src-tauri/target ``` ## 许可证 MIT
标签:CAN FD, CAN总线, ICS安全, Python安全, SocketCAN, 串口通信, 云资产清单, 信号解码, 协议分析, 可视化界面, 嗅探器, 工业控制, 帧传输, 数据帧捕获, 权限提升, 汽车安全, 测试用例, 物联网安全, 硬件黑客, 网络安全, 自动化攻击, 车联网, 逆向工程, 防御绕过, 隐私保护