Linux上的嗅探串行端口


Answers:


27

有几种选择:

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

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

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

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

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

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

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

  • 串行线嗅探器(slsnif)是串行端口记录实用程序。它侦听指定的串行端口,并记录双向通过该端口的所有数据。


2
您可以使用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 | tee /dev/ttyS0。最后3)将程序连接到/dev/tty/28。这两个tee命令会将两个方向都转储到控制台,并转发到实际串行端口/从实际串行端口转发。请注意,必须提前配置端口设置(如波特率)。
jtpereyda

您也可以将tee内容保存到文件中:如果它是二进制协议cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capsxxd则将有所帮助cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
jtpereyda

@jtpereyda看来您的第三步应该是将程序连接到/ dev / ttyS0。例如,当我将PUTTY连接到/ dev / ttyS0时,它可以正确显示步骤2中的输出,同时还可以与实际的嵌入式板通信。顺便说一句,你有错字/deb/pts/27应该是/dev/pts/27。还cat /deb/pts/27 | tee /dev/ttyS0应该是cat /dev/pts/27 | sudo tee /dev/ttyS0
热心者

这个答案很老,请考虑侦听串行端口侦听
CharlesB

1
您可以提供另一个答案。@CharlesB解释为什么会更好。
小鸡

12

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

interceptty /dev/ttyACM0 

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


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

Failed to open a pty: No such file or directory

该邮件列表项指示slsnif仅支持“传统”伪终端(/dev/ttyp0等),而当前Linux内核可能不使用该伪终端。


1
谢谢!我的嵌入式设备上的相同错误。然后我使用interceptty并完成工作!
gfleck

您怎么知道它创建哪个伪终端?
chwi

@chwi您可以给它第二个参数,它是“前设备”的名称,它是指向它创建的伪终端的符号链接。
克雷格·麦昆

谢谢。我发现默认情况下,它会创建一个/ dev / intercepttydummy。我能够来回监视流量,但是从设备传入的数据只能通过拦截读取,而不能运行pyserial。
chwi

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.