将程序的串行输出发送到串行嗅探器使用的伪终端,例如 jpnevulator

将程序的串行输出发送到串行嗅探器使用的伪终端,例如 jpnevulator
  1. 我正在运行一个通过真实串行端口e.g. /dev/ttyS0与远程设备进行通信的应用程序。我可以将此应用程序配置为使用/dev/ttyS0/dev/ttyS1等,方法是将数字后缀传递给程序,而不是完全限定的名称。

  2. 我想使用类似的东西来嗅探通过这个串行端口的流量jpnevulator。这jpnevulator将打开一个伪终端,要监视的应用程序应该连接到该伪终端。

有没有办法重新分配端口的名称,例如/dev/ttyS1分配给实际的伪终端,例如/dev/pty/23,以便应用程序透明地连接到/dev/pty/23via /dev/ttyS1?文件链接可以ln实现这一点吗?

答案1

如果我是你,我只需编辑二进制文件并替换/dev/ttyS%d或类似的字符串/dev/ptyX%d(注意替换的长度与原始字符串相同),然后创建一个指向/dev/ptyX0伪终端从属端路径的符号链接。

还有很多其他的解决方案,或多或少有些尴尬:

a) 如果你的系统是linux,暂时mount --bind /dev/pts/<pty used by the sniffer> /dev/ttyS2(并将你的程序连接到串行线2

b) 同样,移开/dev/ttyS2并用指向 pty 的链接替换它

c) 在qemu中运行它并将vm的串行端口重定向到pty

d) 一些假路径/文件系统解决方案使用LD_PRELOAD

e) 命名空间、unionfs、chroots 等

相关内容