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, 串口通信, 云资产清单, 信号解码, 协议分析, 可视化界面, 嗅探器, 工业控制, 帧传输, 数据帧捕获, 权限提升, 汽车安全, 测试用例, 物联网安全, 硬件黑客, 网络安全, 自动化攻击, 车联网, 逆向工程, 防御绕过, 隐私保护