MacOS 使用WireShark抓包USB
本人使用的OS版本是11.4,旧版本OS可能会有所不同。
安装WireShark
首先我们去WireShark官网下载软件https://www.wireshark.org/并且进行安装。
检查是否开启SIP
检查系统是否开启了SIP( System Integrity Protection)系统完整性保护功能,这个功能有什么作用具体可以去百度,如果开启了这个功能那么就无法进行抓包USB端口了。
- 打开终端
- 输入
csrutil status
命令并回车 - 后面你会看到一下信息中的一个,这个是那你系统的SIP状态
*已打开System Integrity Protection status: enabled
*已关闭System Integrity Protection status: disabled
假如SIP是开启的那我们就需要去关闭它。
关闭/开启 SIP
关闭SIP
- 重启MAC,按住
cmd+R
直到屏幕上出现苹果的标志和进度条,进入Recovery
模式; - 在屏幕最上方的工具栏找到实用工具(左数第3个),打开终端,输入:
csrutil disable
; - 关掉终端,重启mac;
- 重启以后可以在终端中查看状态确认。
开启SIP
与关闭的步骤类似,只是在终端中输入csrutil enable
即可。
开启USB端口监控
Mac OS 有一个虚拟端口,可用于监控USB 数据流。 要启用端口,我们打开终端窗口并键入 sudo ifconfig XHC20 up
就可以开启。
注意:完成USB监控后,可以通过在终端窗口中键入sudo ifconfig XHC20 down
来禁用端口。
注意:如果未关闭SIP我们是开启不了的,会提示未发现XHC20。每次开机都需要开启一次,不然也无法开启监控。
获取USB设备位置ID(Location ID)
当我们想要去监控指定usb设备时,就需要用到USB的位置ID。
单击屏幕左上角的 Apple 菜单并选择“关于本机”,会出现如下窗口:
点击“系统报告”,会出现如下窗口,在左侧选择“USB”,然后查看您感兴趣的 USB 设备:
记住这个Location ID
WireShark抓包
我们打开WireShark,启动它并选择要捕获的端口 - Mac 上的 XHC20。 您应该立即看到 USB 数据包显示在捕获窗口中。 在捕获窗口上方的显示过滤器空间中输入(将 0x14323000 替换为您设备的Location ID):
usb.darwin.location_id == 0x14323000
这样基本可以了,你可以往usb设备发送数据,窗口中就可以显示抓到的数据了。
参考资料
- 开启和关闭SIP–https://www.jianshu.com/p/fe78d2036192
- 使用WireShark进行抓包–https://www.umpah.net/how-to-sniff-usb-traffic-reverse-engineer-usb-device-interactions/