1:通过RVI抓取iPhone数据包
(1)RVI简介
使用Mac抓取iPhone数据包可通过共享和代理两种方式:
这两种方式都是将iPhone的网络流量导入到Mac电脑中,通过Mac连接互联网。这就要求Mac本身是联网的,对于网络共享的方式还要求Mac本身的网络不能使用WiFi,而且在iPhone上只能使用WiFi连接,无法抓取到2G/3G网络包。
苹果在iOS 5中新引入了“远程虚拟接口(Remote Virtual Interface,RVI)”的特性,可以在Mac中建立一个虚拟网络接口来作为iOS设备的网络栈,这样所有经过iOS设备的流量都会经过此虚拟接口。此虚拟接口只是监听iOS设备本身的协议栈(但并没有将网络流量中转到Mac本身的网络连接上),所有网络连接都是iOS设备本身的,与Mac电脑本身联不联网或者联网类型无关。iOS设备本身可以为任意网络类型(WiFi/2G/3G),这样在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> 0d950f479c29a7926ebc44e92b59b68696e963de
==================================================
在Wireshark首页选择rvi0,使用默认的Capture Options即可开始对iPhone进行抓包。
(3)使用rvictl -x命令删除虚拟接口
使用”rvictl -x“命令删除RVI接口,使用iPhone的UDID作为参数。
==================================================
$rvictl -x <UDID> 0d950f479c29a7926ebc44e92b59b68696e963de
==================================================
2、电脑做wifi热点,手机连上后电脑上使用wireshark抓包
该方法手机无须root,并且适用于各种有wifi功能的手机(IOS、android等)、平板等。只要电脑的无线网卡具有无线承载功能,就可以。方法如下:
1.把电脑的网络做为热点
2.开启wifi热点后,被测手机连接到该热点;
3.启动wireshark,选择做为热点的网卡,点击start开始抓包;
4.操作手机,可以抓取到手机所有与网络交互的数据包,如需停止,直接点击wireshark的stop即可。