如何在Mac上监听USB流量?

22

有没有一种方法可以在Mac上嗅探USB端口?我看过libusb#usblib,但是我找不到在Mac上可用的东西。


谁告诉你libusb在OS X上不起作用了? - user529758
2
libusb 在OSX上可用;我找不到一个基于 libusb 的嗅探器。 - vy32
3个回答

17

我找到了一种方法,你需要Wireshark的夜间版本(我使用的是V2.5.0rc0)。安装完成后,你需要启动USB“接口”:

sudo ifconfig XHC20 up

接着您可以使用Wireshark来嗅探XHC20接口中的所有流量。完成后,请记得将该接口关闭:

sudo ifconfig XHC20 down

来源: aud-ios.


4
注意:这需要 macOS 10.13(High Sierra)才能运行,无法在 macOS 10.12.6 或更早版本上运行。 - rob mayoff
2
我最近在使用10.13 High Sierra和一台约7年的MacBook尝试了这个。没有XHC20接口。但是通过一些侦探式的调整,我发现EHC36EHC38接口是USB接口,并且我能够使用Wiresharktcpdump -i EHC38从它们中捕获USB流量。 - D. Woods
1
您仍然可以在MacOS 10.15+中使用sude ifconfig XCH20 up,方法是关闭系统完整性保护,具体步骤如下:
  1. 重新启动进入恢复模式(Command + R)
  2. 打开终端
  3. 输入csrutil disable
  4. 重新启动
- Adonis Gaitatzis

5
注意安装IOUSBFamily日志时要小心。它已经几年没有更新了。OS X版本必须匹配,否则所有USB设备,包括内置触摸板/键盘都可能无法工作。如果发生这种情况,您必须从恢复模式手动重新加载正确的kext:https://discussions.apple.com/message/20152486#20152486 以下是从恢复模式重新加载的步骤:
我在我的机器上安装了错误的操作系统版本的USB Prober后遇到了同样的问题。它安装时没有任何警告,但事实证明,它包括IOSUSBFamily.kext内核模块,该模块在我的机器上无法工作,并且这会禁用所有USB设备(包括笔记本电脑自带的键盘和触摸板)。
以下是我如何解决此问题的步骤,请务必非常小心,以免损坏您的机器:
1)按住CTRL + R并启动计算机,这将引导进入“恢复模式”
2)打开终端
3)找出原始的IOUSBFamily内核扩展和Macintosh HD上的内核扩展。我的位置如下:
原始:/System/Library/Extensions/IOUSBFamily.kext
新的(损坏的):/Volumes/Macintosh\ HD/System/Library/Extensions/IOUSBFamily.kext
4)将损坏的模块移开:
$ mkdir /Volumes/Macintosh\ HD/Users/recovery-backup
$ mv /Volumes/Macintosh\ HD/System/Library/Extensions/IOUSBFamily.kext /Volumes/Macintosh\ HD/Users/recovery-backup

5) 将原始文件复制回去:

$ cp -a /System/Library/Extensions/IOUSBFamily.kext /Volumes/Macintosh\ HD/System/Library/Extensions/IOUSBFamily.kext

重新启动,问题应该就解决了。

这比Linux还糟糕:D - Karel Bílek

4
你可以使用IOUSBFamily日志。如果你正在使用OSX 10.8.2,你可能想要尝试USB Prober Xcode硬件IO工具包中包含的,2012年2月版(需要苹果开发者账户),因为最新版本的IOUSBFamily适用于OSX 10.9.4。
即使在现在(2018年),也没有比10.9.4更新的版本,它们不能在更新的macOS版本中使用。

所以我尝试使用这个加上探针,但似乎我只能获取前两个DWORDS的数据,即使长度显示还有更多。对于我想要实现的目标来说,这不是足够的信息。还有其他的想法吗? - jbh
如果您可以使用Linux而不是Mac OS,Wireshark支持USB抓包:http://wiki.wireshark.org/CaptureSetup/USB - alexgolec
1
苹果不提供El Capitan 10.11.5的IOUSBFamily日志。看起来他们几年前就停止更新了。他们确实发布了源代码:http://opensource.apple.com/tarballs/IOUSBFamily/,但由于错误无法在Xcode中编译最新版本。 - donturner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接