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