Linux用wireshark抓取USB数据包,MAC OS利用Remote Virtual Interface+wireshark抓取iphone数据包

 

 

 

Linux:type in terminal:

su -c “modprobe usbmon”

su -c “wireshark”

(First load kernel module that allow for usb sniffing for root, second load wireshark as root)

Than select usbmonX, where X stand for usb bus number (lsusb show those numbers).

After than you still need to filter packets for device / vendor id, or something else device specific, as wireshark will show all packets from all devices plugged into that bus. (Again lsusb before/after plugging you device will help).

 

—————————————–

 

苹果在 iOS 5 中新引入了“远程虚拟接口(Remote Virtual Interface,RVI)”的特性,可以在 Mac 中建立一个虚拟网络接口来作为 iOS 设备的网络栈,这样所有经过 iOS 设备的流量都会经过此虚拟接口。此虚拟接口只是监听 iOS 设备本身的协议栈(但并没有将网络流量中转到 Mac 本身的网络连接上),所有网络连接都是 iOS 设备本身的,与 Mac 电脑本身联不联网或者联网类型无关。iOS设备本身可以为任意网络类型(WiFi/xG),这样在 Mac 电脑上使用任意抓包工具(tcpdump、Wireshark、CPA)抓取 RVI 接口上的数据包就实现了对 iPhone 的抓包。

Mac OS X 对 RVI 的支持是通过终端命令 rvictl 提供的,在终端(Terminal)中输入“ rvictl  ? ”命令可查看帮助:

==================================================

rvictl Options:

-l, -L                     List currently active devices

-s, -S                     Start a device or set of devices

-x, -X                    Stop a device or set of devices

==================================================

(2)使用 “ rvictl  -s ”命令创建虚拟接口

首先,通过 MFI USB 数据线将 iPhone 连接到安装了 Mac OS+Xcode 4.2(or later) 的 Mac 机上。iOS 7 以上需要搭配 Xcode 5.0(or later),抓包过程中必须保持连接。

然后,通过 iTunes->Summary 或者 Xcode->Organizer->Devices 获取 iPhone 的 UDID(identifier)。

接着,使用“rvictl -s”命令创建 RVI 接口,使用 iPhone 的 UDID 作为参数。

==================================================

$rvictl -s <UDID>

==================================================

创建成功后,在终端通过 ifconfig 命令可以看到多了一个 rvi0 接口。当有多个 iOS 设备连接 iMac 时,依次是 rvi1,rvi2…,使用“ rvictl  -l ”命令可以列出所有挂接的虚拟接口。

在 Wireshark 首页选择 rvi0,使用默认的 Capture Options 即可开始对 iPhone 进行抓包。