iOS系統設備網絡抓包工具介紹:越獄和不越獄的辦法


對終端進行抓包是客戶端測試中的一種重要手段。本文主要介紹了ios設備(iphone、ipad和ipodtouch)的幾種常用的抓包方法。

 

  一、准備條件

   需要進行抓包的設備必須經過root,俗稱越獄,主要利用redsn0w和各種iOSFirmwares進行,如越獄不用更換固件版本,只需使用 redsn0w安裝Cydia即可,網上有詳細教程,此處省略。安裝完畢,在3G或WiFi環境下啟動Cydia,確認身份為“開發者”,如下圖。

  通過Cydia源,用戶可以下載和安裝比appstore更高權限的軟件,但是在Cydia源中下載程序時,如果ios設備鎖頻待機就會中斷下載。我們可以在“設置-通用-自動鎖定”中把時間設置為“永不”來防止待機。此外如果有同學發現在簡體中文環境下使用Cydia搜索會閃退,請不要驚慌,參見附錄即可解決該問題。

  Root后的設備,如不及時修改密碼,容易被他人破壞你的系統,因此作為抓包的准備條件之一,請修改root密碼,初始密碼為alpine,可通過SSH連接訪問或者直接在ios設備上的MobileTerminal上進行密碼修改。

  二、抓包方式

  方法1:SSH連接訪問ios設備抓包(通過USB)--強烈推薦

  【准備工作】

  ios設備上安裝tcpdump

  PC上安裝iPhoneTunnel(集成終端工具putty功能,附近中為免安裝版本)

  【操作步驟】

  1.用USB線纜連接手機與PC,確保手機連接正確,啟動iPhoneTunnel,綠燈表示TunnelStatus正常,此時點擊LaunchTerminal按鈕即可SSH進入手機,如下圖;

  2.Putty出現一個提示窗口,如果你不是經常使用SSH,請直接點擊“否”即可,如下圖;

  3.接着PuTTY會以root用戶身份嘗試登錄設備,並輸入root密碼;

  4.使用tcpdump進行抓包(參見附錄),如下圖。

  【方法點評】

  通過USB方式直接SSH進入設備,無論設備在WiFi還是2G/3G下,都可以進行抓包,而且使用簡單,方法無局限性,值得采用。

  方法2:SSH連接訪問ios設備抓包(通過WiFi)

  【准備工作】

  ios設備上安裝tcpdump(參見附錄)

  PC上安裝putty(附近中為免安裝版本)

  ios設備連接WiFi網絡,且與PC處於同一個網絡中,如無WiFi網絡,可使用PC作為熱點虛擬一個WiFi網絡供ios設備連接

  【操作步驟】

  1.在ios設備上查看ip地址(設置Wi-Fi中,點擊已連接WiFi右側的小箭頭可看到);

  2.點擊putty,輸入設備的ip地址,並選擇連接類型為SSH,點擊打開,如下圖;

  3.以下操作同方法1的2-4步。

  【方法點評】

  PuTTY是通過WiFi方式SSH進入到手機的,必須知道手機的IP地址,如果手機沒有WiFi就不能使用這種方法,因此該方法有一定的局限性。

  方法3:直接在終端上操作進行抓包

  【准備工作】

  ios設備上安裝MobileTerminal、tcpdump(參見附錄)

  【操作步驟】

  1.點擊設備桌面“Teminal”圖標;

  2.切換至root用戶登錄;

  3.使用tcpdump進行抓包(參見附錄),如下圖。

  【方法點評】

  不受網絡條件制約,但由於是在終端上操作抓包,對ios設備來講,MobileTerminal切至后台就不再工作,因此該抓包方法可行性較低,盡管如此,MobileTerminal對終端測試人員來說依然是一款很實用的工具。

 三、導出及其它

  Pcap文件生成后可通過91手機助手(IOS版)將文件下載至PC,然后通過Wireshark或Ethereal打開文件,分析報文。

 

  四、附錄

1.中文環境下Cydia搜索閃退問題解決方法

首先把系統語言改為英文,之后進入Cydia,添加第一中文源(

http://apt.178.com), 添加源的方法如下:進入Cydia,點擊Manage,然后點擊Source,進入后點擊右上角的Edit,再點擊左上角的Add,輸入源地址,點擊添 加,出現警告的話,點仍然添加。等待列表刷新完成即可,返回Cydia后在Manage>第一中文源下查找ios5Cydia中文崩潰解決補丁安裝 即可,如下圖。再次將系統切換至簡體中文后可正常使用Cydia搜索功能。

 

 

  2.OpenSSH安裝

   OpenSSH提供了服務端后台程序和客戶端工具,用來加密遠程控件和文件傳輸過程的中的數據。安裝完畢后,用戶才可以使用PC通過遠程訪問來控制終 端。啟動Cydia后點右下角的“搜索”,即可找到OpenSSH。進入安裝頁面,點擊右上角的Install完成安裝,如下圖。

 

 

  3. MobileTerminal安裝

   MobileTerminal是一款在iOS設備上使用的終端管理軟件,采用類似於命令行的非圖形界接口管理iOS設備的進程,運行並不依賴於 Openssh或者Telnet,是獨立運行於系統上的app程序。進入Cydia后在Manage>第一中文源下查找能與系統適配的 MobileTerminal並進行安裝,如下圖。

 

 

 

  4.tcpdump安裝

  通過91手機助手(IOS版)可在終端上安裝tcpdump,下載地址:http://apt.saurik.com/debs/如不確定哪一個適用自己手機,可對附件中的tcp安裝包進行全部安裝。

  如果在安裝完畢后執行tcpdump提示libpcap的錯誤,需安裝libpcap,如不確定哪一個適用自己手機,可對附件中的lib安裝包進行全部安裝。

  5.ios設備上tcpdump的使用

  對於一些ios設備如iphone及ipad,既可以接入WiFi,也可以接入2G/3G,在使用tcpdump命令時請注意網口類型,WiFi接入時網卡為en0,而2G/3G接入時網卡為pdp_ip0,而網卡不指定時默認為pdp_ip0。舉例來說,

  WiFi下抓包tcpdump -i en0 -X -s0 -wdata.pcap

  2G/3G下抓包tcpdump -i pdp_ip0 -X -s0 -w data.pcap或tcpdump-X -s0 -w data.pcap

  五、Q&A

  (Ⅰ)如果SSH連接ios設備時提示“ServerUnexpectedly Closed Network Connection”,該怎么辦?

  A:可通過重新安裝OpenSSH來嘗試解決問題。

 

  (Ⅱ)如果在安裝了tcp安裝包和lib安裝包后執行tcpdump仍提示失敗,該怎么辦?

  A:有可能是缺少libcrypto.0.9.8.dylib文件造成,可從其它ios設備usr/lib路徑下copy至本機再進行嘗試。

  在進行iOS開發過程中,經常會遇到各種各樣的網絡訪問問題,以前苦於沒有抓包工具,很多網絡問題解決起來很痛苦。現在終於好了,本文提供兩種方式進行網絡抓包:

 

  1. 網絡共享 + 可視化抓包工具

  基本原理

  原理比較簡單,ios設備通過代理方式共享連接mac電腦的無線網卡,使用抓包工具抓包,然后進行分析(我們推薦使用Wireshark,在MAC系統上也可以使用Paros工具)。

  現在以MAC系統下Paros工具為例,詳細描述下抓包過程:

  操作步驟:

  1) 首先將MAC電腦的以太網共享給airport,使iOS設備能夠通過wifi連接

  打開系統偏好設置,找到共享,選擇internet共享,在右側“通過以下方式將”選擇以太網,“連接共享給其他電腦”選擇airPort。

  2) 打開paros ,設置paros的本地代理paros下載地址(http://www.parosproxy.org/)

   在paros的tools-》options中選擇local proxy,在Address 中輸入AirPort的ip地址。輸入端口8080。打開系統偏好設置,找到網絡,選擇左側的AirPort,可以看到AirPort的地址為 169.254.69.225,將該地址填入到上面提到的Address欄中。

  3) 使用ios設備連接mac共享出來的網絡:在iOS設備中,選擇設置-》通用-》網絡-》wifi,找到共享的網絡,加入。然后在該網絡的纖細內容中的http代理部分,選擇手動,輸入paros中設置的代理ip和端口。

  4) 下面就可以使用paros來監控iOS設備的網絡,我們打開Safiri,在paros中即可察看到網絡的所有請求。

 

2. tcpdump命令 + 可視化抓包工具

  基本原理

  tcpdump命令是一個網絡的抓包的命令行,他能指定具體的設備,也能制定具體的五元組進行捕獲鏈路上的數據包。它可以再終端上打印出來也可以將捕獲到得數據寫入到一個文件,文件的格式是二進制形式,所以,我在打開該文件的時候才用的工具是UltraEdit。

當然也可以保存成Wireshark能夠識別的pcap格式,然后使用Wireshark進行查看。

  操作步驟

  1) 采用ssh登陸iphone手機,使用top命令獲取:

  具體步驟如下:

  a) 獲取設備IP地址(wifi地址):

  b) 在PC上打開終端,輸入ssh root@IP地址:

  輸入密碼:alpine (root用戶的默認密碼)

  2) 通過“tcpdump -X -s0 -w /data.pcap”命令將tcp數據包保存到iOS設備的根目錄下。

  3) 通過91助手等工具取出pcap文件,在Windows下使用雙擊使用Wireshark打開查看。

  當然也可以不輸出到文件,tcpdump的命令格式和參數說明:

  tcpdump [ -adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ]

  [ -i 網絡接口 ] [ -r 文件名] [ -s snaplen ]

  [ -T 類型 ] [ -w 文件名 ] [表達式 ]

  選型介紹:

  -a    將網絡地址和廣播地址轉變成名字;

  -d    將匹配信息包的代碼以人們能夠理解的匯編格式給出;

  -dd   將匹配信息包的代碼以c語言程序段的格式給出;

  -ddd   將匹配信息包的代碼以十進制的形式給出;

  -e    將捕獲的包數顯示出來

  -f    將外部的Internet地址以數字的形式打印出來;

  -l    使標准輸出變為緩沖行形式;

  -n    不把網絡地址轉換成名字;

  -t    在輸出的每一行不打印時間戳;

  -v    輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息;

  -vv   輸出詳細的報文信息;

  -c    在收到指定的包的數目后,tcpdump就會停止;

  -F    從指定的文件中讀取表達式,忽略其它的表達式;

  -i    指定監聽的網絡接口;

  -r    從指定的文件中讀取包(這些包一般通過-w選項產生);

  -w   直接將包寫入文件中,並不分析和打印出來;

  -T    將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠程過程調用)和snmp(簡單網絡管理協議;)

  在使用該命令的時候,我主要使用的主要選項是: -i [接口名] -w [文件名] -v -vv -c -X -e

  例如:

  我在從eth0捕獲100個數據包的時候,並將數據寫入到capture.cap文件中,命令格式為:

  tcpdump -i eth0 -w capture.cap -v -vv -c 100 -X -e

  抓取一個一個ip段之間的數據包:

  tcpdump –s 0 –w socket host 10.1.3.9 and host 10.1.3.84

  如果從eth0且通信協議端口為22,目標IP為192.168.1.100獲取數據:

  tcpdump -i eth0 port 22 and src host 192.168.1.100

  此外還有其他的一些關鍵詞:host,(主機) , net( 網關), port(端口) , src(源IP) , dst(目的IP), 正則表達式:and , or。

  未越獄ios設備的抓包方法

  2014-04-24 22:33 181人閱讀 評論(0) 收藏 舉報

  Remote Virtual Interface

  在iOS 5以后增加了RVI(Remote Virtual Interface),它讓我們使用OS X來抓取ios device上數據包。

  基本的方法就是把設備通過USB連上mac上。然后為這台設備安裝RVI,這個虛擬的在Mac上的網卡,就代表這台ios設備的使用網卡。然后在mac上跑抓包的工具,定位到這個虛擬的網卡上,來抓包。

  (1)安裝RVI,需要使用rvictl工具,以下步驟在mac的終端中操作:

  $ # First get the current list of interfaces.

  $ ifconfig -l

  lo0 gif0 stf0 en0 en1 p2p0 fw0 ppp0 utun0

  $ # Then run the tool with the UDID of the device.

  $ rvictl -s 74bd53c647548234ddcef0ee3abee616005051ed

  Starting device 74bd53c647548234ddcef0ee3abee616005051ed [SUCCEEDED]

  $ # Get the list of interfaces again, and you can see the new virtual

  $ # network interface, rvi0, added by the previous command.

  $ ifconfig -l

  lo0 gif0 stf0 en0 en1 p2p0 fw0 ppp0 utun0 rvi0

  (2)安裝成功后,此時其實可以用任何抓包工具來抓取。包括wireshark等。因為這時就會看到一個rvi0的網卡。不過今天我們介紹的是通過tcpdump來搞。

  在終端中輸入如下命令:

  sudo tcpdump -i rvi0 -n -s 0 -w dump.pcap tcp

  解釋一下上面重要參數的含義:

  -i rvi0 選擇需要抓取的接口為rvi0(遠程虛擬接口)

  -s 0 抓取全部數據包

  -w dump.pcap 設置保存的文件名稱

cp 只抓取tcp包

  當tcpdump運行之后,你可以在iOS設備上開始瀏覽你想抓取的App,期間產生的數據包均會保存到dump.pcap文件中,當想結束抓取時直接終止tcpdump即可。然后在mac中找到dump.pcap文件。用wireshark打開就ok。

  (3)去掉RVI這個虛擬網卡,使用下面的命令:

  $ rvictl -x 74bd53c647548234ddcef0ee3abee616005051ed

  Stopping device 74bd53c647548234ddcef0ee3abee616005051ed [SUCCEEDED]

  整個流程就是這樣的。自己動手操作一下吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM