1:通过RVI抓取iPhone数据包

(1)RVI简介

Mac抓取iPhone数据包可通过共享和代理两种方式:

 

  • 使用Mac的网络共享功能将Mac的网络通过WiFi共享给iPhone连接;
  • 使用代理软件(例如Charles)在Mac上建立HTTP代理服务器。

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的抓包。

对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即可。