本帖最后由 idreamshen 于 2023-7-24 21:43 编辑
分享一个使用 ESP32 对目标设备串口 tx/rx 实现远程抓包的方案,主要用到了 Esphome UART 组件的 Debugging 功能。使用场景:当无法使用有线进行目标设备串口抓包时,可用 ESP32 制作一个远程抓包工具
物料
软件:Esphome
硬件:ESP32 模组
Esphome 固件配置 yaml
uart:
- id: myuart1
rx_pin: 3
baud_rate: 9600 # 自行修改
debug:
direction: RX
dummy_receiver: true
sequence:
- lambda: UARTDebug::log_hex(uart::UART_DIRECTION_RX, bytes, ':');
- id: myuart2
rx_pin: 16
baud_rate: 9600 # 自行修改
debug:
direction: RX
dummy_receiver: true
sequence:
- lambda: UARTDebug::log_hex(uart::UART_DIRECTION_TX, bytes, ':');
更多内容参考:https://esphome.io/components/uart.html#debugging
硬件接线
ESP32 有两路 tx/rx 引脚,本方案中将使用到其 GPIO3 和 GPIO16 引脚,对应标识为 RX0 和 RX2 UART 0 TX | GPIO1 | UART 0 RX | GPIO3 | UART 2 TX | GPIO17 | UART 2 RX | GPIO16 |
将目标设备的 TX 引脚连接 ESP32 的 RX0,将目标设备的 RX 引脚连接 ESP32 的 RX2。
ESP32 上电后就能从日志中看到目标设备的 TX/RX 引脚收发的数据包。大致如下:
[20:30:36][D][uart_debug:114]: >>> 01:03:00:FF:FF:FF:FF:FF:FF:FE
[20:30:36][D][uart_debug:114]: <<< 01:03:00:02:1C:03:1E:00:00:43
[20:30:43][D][uart_debug:114]: >>> 01:00:FF:FF:FF:FF:FF:FF:FF:FA
[20:30:43][D][uart_debug:114]: <<< 01:00:00:02:1C:03:1F:00:00:41
[20:30:44][D][uart_debug:114]: >>> 01:01:FF:FF:FF:FF:FF:FF:FF:FB
[20:30:44][D][uart_debug:114]: <<< 01:01:00:02:1C:03:1F:00:00:42
[20:30:44][D][uart_debug:114]: >>> 01:02:FF:FF:FF:FF:FF:FF:FF:FC
[20:30:44][D][uart_debug:114]: <<< 01:02:00:04:1A:01:1F:00:00:41
|