我正在运行一个通过真实串行端口
e.g. /dev/ttyS0
与远程设备进行通信的应用程序。我可以将此应用程序配置为使用/dev/ttyS0
、/dev/ttyS1
等,方法是将数字后缀传递给程序,而不是完全限定的名称。我想使用类似的东西来嗅探通过这个串行端口的流量
jpnevulator
。这jpnevulator
将打开一个伪终端,要监视的应用程序应该连接到该伪终端。
有没有办法重新分配端口的名称,例如/dev/ttyS1
分配给实际的伪终端,例如/dev/pty/23
,以便应用程序透明地连接到/dev/pty/23
via /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 等