在 Linux 上嗅探串口

26 linux serial packet-sniffer

如何在 Linux 上嗅探通过串行端口通信的数据包?

hlo*_*dal 29

有几个选项:

  • sersniff是一个简单的程序,用于在 2 个串行端口之间进行隧道/嗅探。

  • 串行到网络代理 (ser2net)为用户提供了一种从网络连接到串行端口的连接方式。

  • SerialSpy充当串行直通设备。它侦听两个串行端口上的传入数据并转发它,因此设备就好像它们是直接连接的一样。它还在数据通过端口时记录数据。

  • sercd是符合 RFC 2217 的串行端口重定向器。它允许您通过网络共享一个串行端口。它基于 sredird。RFC2217 协议是 telnet 的扩展,允许更改通信端口参数。

  • SerLooK是一个 KDE 应用程序,用于检查通过串行线路的数据。它可以作为一个二进制终端,通过定义的端口(点对点模式)发送和接收数据,并在单独的视图上显示它们。每个视图都可以配置为以十六进制、十进制、八进制、二进制和原始 ASCII 显示数据。还可以通过终端仿真视图执行 I/O,并定义辅助端口并使用“Y”电缆(窥探模式)监视两个外部主机之间的流量。

  • nullmodem创建了一个伪终端的虚拟网络。它可以作为一个适配器来连接两个通常需要串行接口卡的程序。

  • ttywatch监视、记录和多路复用终端 I/O。它内置了完整的日志轮换功能,可以使用 telnet 以及本地 TTY 端口。

  • 串行线路嗅探器(slsnif) 是一个串行端口记录实用程序。它侦听指定的串行端口并记录在两个方向上通过该端口的所有数据。

  • 您可以通过使用 `socat` 和 `tee` 的标准工具来实现这一点。1) `socat -d -d pty,raw,echo=0 pty,raw,echo=0`。输出将为您提供两个端口 `...N PTY is /dev/pts/27... N PTY is /dev/pts/28`。2) `sudo cat /dev/ttyS0 | tee /dev/pts/27` 和另一个终端`sudo cat /deb/pts/27 | 三通/dev/ttyS0`。最后 3) 将您的程序连接到 `/dev/tty/28`。这两个 tee 命令将双向转储到控制台并转发到/从实际串行端口。请注意,必须提前配置波特率等端口设置。 (2认同)

Cra*_*een 14

我尝试了拦截在 GitHub 上复制),并成功使用了它。首先,我在感兴趣的端口上运行它:

interceptty /dev/ttyACM0 
Run Code Online (Sandbox Code Playgroud)

然后我将被测程序连接到/dev/pts/5拦截创建的伪终端。


我尝试使用slsnif,但发现出现错误:

Failed to open a pty: No such file or directory
Run Code Online (Sandbox Code Playgroud)

此邮件列表项表明 slsnif 仅支持/dev/ttyp0在当前 Linux 内核上可能未使用的“传统”伪终端(等)。


小智 3

尝试使用jpnevulator(debian 打包)或slsniff。请注意,slsniff 使用已弃用的终端仿真模型。