【问题标题】:Sniffing IOCTL and serial port communication嗅探IOCTL和串口通信
【发布时间】:2013-03-18 03:55:49
【问题描述】:

我正在尝试反转 90 年代早期逻辑分析仪及其 PC 软件使用的协议。 该设备通过RS-232(专有接线)连接并与DOS程序通信,在DOSBOX上成功运行。

我可以使用原始软件控制设备,但使用自定义程序从分析仪下载数据会很有用,但要这样做,我需要知道串行端口上发生了什么。

需要知道串行端口设置的模式是什么,而我确定数据速率是 1200 或 9600 bps(可在设备上配置)我不知道流量控制(我猜它是 RTS/CTS) .
我还需要在不干扰他们通信的情况下进入程序和设备之间的对话。
用另一个程序(cutecom/minicom)读取串口会阻止模拟器从硬件接收数据。

所以,总结一下,我需要知道的是:

  • /dev/ttyS0 上设置了什么配置(我认为是通过 IOCTL 调用)
  • 程序和设备之间发生了什么。

我正在考虑编写一个库来充当标准 c 库的代理(通过 LD_PRELOAD),但必须有更简单的方法来做到这一点。

【问题讨论】:

    标签: linux serial-port ioctl sniffer


    【解决方案1】:

    您可以使用slsnif(串行线路嗅探器)。

    http://linux.die.net/man/1/slsnif

    这里是 sourceforge 项目的链接,您可以下载它。我不相信它带有任何现代发行版,但我可能是错的,所以请先检查你发行版的软件存储库。

    http://sourceforge.net/projects/slsnif/

    【讨论】:

    • slsniff(可能还有其他类似拦截器)似乎消耗了来自串行端口的任何内容,而没有将其正确转发到模拟器。我可以看到来自设备的内容,但程序看起来好像没有收到任何东西。
    • @NeonMan,当你运行它时一定要使用 unix98 选项,因为我认为这可能是你提到的原因。
    • 拦截似乎可以很好地转发流量(运行它来转发 RealDev FakeDev1 FakeDev2 {rogram you can catch communication FakeDev1 --> RealDev)但是设备似乎没有发回任何东西。我最好的猜测是因为它不能转发 ioctls(RS232 信号)。 Ttyrpld 似乎有潜力,因为它带有内核模块,但我未能设置它并查看 linux 驱动程序代码,它可能无论如何都不会转发 ioctls :( .
    【解决方案2】:

    我使用ttyrpld 进行tty 嗅探。我将它移植到 PPC 并在 2.6.32 上运行。它将板上的所有 tty 流量记录到文件中,每个 tty 一个。效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      相关资源
      最近更新 更多