在 osx 上嗅探 usb 串行通信的方法
method to sniff usb-serial communication on osx
在 windows,有几个不错的替代品(大部分是付费的)可以让您监控串行端口通信。在 OSX 上有很多终端应用程序可以让您与串行设备通信,但我还没有找到监视串行端口通信的机制。
具体用例是:
我有一个位于 /dev/tty.usbmodem99999
上的 USB 串行设备
我已经编写了一个 运行 多个命令(成功)的集成测试。
但是在重新运行命令时设备没有响应。我已经(尽我所能)确认该设备没有问题。它按预期在其他平台上工作。但是在 OSX 我只能在重置设备(电源循环)后重新 运行 测试。
我的理论是我的代码没有正确释放设备,但是当我看不到我的设备和我的应用程序之间的通信时很难确认。
此应用程序:“http://www.aggsoft.com/serial-port-monitor.htm”有一个 'spy' 功能,我一直无法在 OSX 上找到类似的功能。我已经在 osx 上试验过 'serial tools',但它看起来不像是在单个端口上进行间谍操作,在那种情况下,它看起来像是两个设备之间的直通而不是而不是在端口监控。
非常感谢任何想法。
正在使用的串行库是:
https://github.com/jacobsa/go-serial
你用过DTrace吗?
我用它来监控 FTDI USB/serial 转换器和第 3 方 'Black Box' 应用程序之间的 USB 通信。所以我可以获得应用程序发送到 USB 串行端口的 一切。
这非常简单,因为我知道应用程序的名称,所以 DTrace 可以观察到它。我编写了 DTrace 脚本来观察应用程序打开的文件描述符(寻找“/dev/tty.usbmodem...”)然后观察与该文件描述符的交互。
我没有观察到设备驱动程序。原则上,如果内核或设备驱动程序被编译为与 DTrace 一起工作,DTrace 就可以做到这一点,尽管不确定是否如此。 Apple 还可以构建对 DTrace 'invisible' 的代码(例如,我相信 iTunes 对 DTrace 是不透明的,以保护其 DRM 机制。)
所以一个可能的起点是观察所有 OS open/creat 调用,寻找 /dev/tty.usbmodemXXX,并尝试识别子系统并观察它。您可能会发现可以观察子系统,这应该有助于了解 OS+设备驱动程序在做什么。
这不是微不足道的。如果您的时间有任何价值,获得硬件 USB 嗅探器并将其放入电缆中可能更便宜且更可靠,尤其是如果它只有 1.2Mbits 或 12MBits USB(对于更高的数据速率,嗅探器要贵得多)。
这些链接可能有帮助:
About DTrace
DTrace Guide
DTrace book
Brendan Gregg's Top 10 DTrace scripts for Mac OS X
Apple DTrace manual
Hooked on DTrace
在 windows,有几个不错的替代品(大部分是付费的)可以让您监控串行端口通信。在 OSX 上有很多终端应用程序可以让您与串行设备通信,但我还没有找到监视串行端口通信的机制。
具体用例是: 我有一个位于 /dev/tty.usbmodem99999
上的 USB 串行设备我已经编写了一个 运行 多个命令(成功)的集成测试。
但是在重新运行命令时设备没有响应。我已经(尽我所能)确认该设备没有问题。它按预期在其他平台上工作。但是在 OSX 我只能在重置设备(电源循环)后重新 运行 测试。
我的理论是我的代码没有正确释放设备,但是当我看不到我的设备和我的应用程序之间的通信时很难确认。
此应用程序:“http://www.aggsoft.com/serial-port-monitor.htm”有一个 'spy' 功能,我一直无法在 OSX 上找到类似的功能。我已经在 osx 上试验过 'serial tools',但它看起来不像是在单个端口上进行间谍操作,在那种情况下,它看起来像是两个设备之间的直通而不是而不是在端口监控。
非常感谢任何想法。
正在使用的串行库是: https://github.com/jacobsa/go-serial
你用过DTrace吗?
我用它来监控 FTDI USB/serial 转换器和第 3 方 'Black Box' 应用程序之间的 USB 通信。所以我可以获得应用程序发送到 USB 串行端口的 一切。
这非常简单,因为我知道应用程序的名称,所以 DTrace 可以观察到它。我编写了 DTrace 脚本来观察应用程序打开的文件描述符(寻找“/dev/tty.usbmodem...”)然后观察与该文件描述符的交互。
我没有观察到设备驱动程序。原则上,如果内核或设备驱动程序被编译为与 DTrace 一起工作,DTrace 就可以做到这一点,尽管不确定是否如此。 Apple 还可以构建对 DTrace 'invisible' 的代码(例如,我相信 iTunes 对 DTrace 是不透明的,以保护其 DRM 机制。)
所以一个可能的起点是观察所有 OS open/creat 调用,寻找 /dev/tty.usbmodemXXX,并尝试识别子系统并观察它。您可能会发现可以观察子系统,这应该有助于了解 OS+设备驱动程序在做什么。
这不是微不足道的。如果您的时间有任何价值,获得硬件 USB 嗅探器并将其放入电缆中可能更便宜且更可靠,尤其是如果它只有 1.2Mbits 或 12MBits USB(对于更高的数据速率,嗅探器要贵得多)。
这些链接可能有帮助:
About DTrace
DTrace Guide
DTrace book
Brendan Gregg's Top 10 DTrace scripts for Mac OS X
Apple DTrace manual
Hooked on DTrace