如何捕获仿真串行端口上的控制流引脚?

逆向工程 linux 串行通讯 虚拟机
2021-07-09 18:47:29

我正在逆向工程 CPS 软件包如何与无线电设备通信。我已经掌握了基础知识,并希望欺骗软件认为 COM1 是无线电,而实际上我想捕获控制流引脚状态变化(CTR 和 RST)。

我在 Qemu 和/或 Virtual Box 中运行 Windows XP,Linux 作为基本操作系统。Linux 有没有办法模拟软件定义的串行端口来捕获所有引脚状态变化?

我曾尝试使用socat,特别是类似这样的东西socat -d -d pty,raw,echo=0,b9600 pty,raw,echo=0,b9600,但尝试更改结果上的控制流引脚/dev/pts/X会导致ioctl错误。此外,simplecat /dev/pts/X仅显示通过设备发送的内容,而不是控制流更改。

我该怎么做?而且,我如何将生成的设备传递给 Windows VM 以使其认为它正在与之通信COM1

谢谢!

1个回答

要回答我自己的问题,您可以使用 Linux 内核模块tty0tty来捕获控制引脚和数据流。