很多時候需要網絡抓包分析,在iPhone上抓包稍有不同,下面介紹三種常用的方式。分析工具以wireshark為例。
一、最簡單的方式:用PC作為熱點,在PC上抓包
- 優點:簡單;
- 缺點:不能抓真機2G/3G/4G網絡數據。
步驟如下:
- PC接上有線;
- PC用Wi-Fi方式共享網絡,即PC作為一個熱點;
- 手機設置網絡,選擇PC那個熱點;
- 在PC上打開wireshark,選擇要監控的接口,指定Wi-Fi端口,開始捕捉。
二、tcpdump命令
- 優點:優點很多,可以做很高級的定制和選擇,可以編程控制;
- 缺點:兩個,一是手機必須越獄,二是使用比較麻煩。
步驟如下:
1. 下載tcpdump:從cydia搜索安裝tcpdump,如果沒有搜到,請先添加源http://apt.saurik.com。
2. 安裝openssh:從cydia搜索安裝openssh,如果沒有搜到,請先添加源http://apt.saurik.com。
3. 退出cydia,這會重啟機器或重啟springboard。
4. 在PC上通過ssh命令訪問手機,以root身份,root的初始密碼是alpine,例如:
ssh root@192.168.1.118
按提示輸入密碼之后,就遠程登錄到手機了(建議第一件事是用pwd立即改掉默認密碼),此時可以執行tcpdump命令錄制網絡數據。
5. tcpdump的簡單用法
tcpdump -h 顯示幫助信息: Usage: tcpdump [-aAdDeflLnNOpqRStuUvxX] [-c count] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -Z user ] [ expression ]
關於tcpdump的使用,網上很多,例如:http://blog.chinaunix.net/uid-20237628-id-3946009.html
由於tcpdump只是抓取數據,抓取的數據我們要拿到PC上用wireshark或類似工具分析,因此 -w開關是必須的,它用來指定一個文件,該文件保存抓到的數據,隨后我們就把這個文件拷貝到電腦上進行分析。
-i 開關是最重要的,它指定要攔截的網絡接口,對於Wi-Fi,接口是en0,對於移動數字網絡,網絡接口是pdp_ip0。例如:
tcpdump -s 0 -i pdp_ip0 -w ~/1.PCap
命令要求抓取移動網絡接口的數據,要完整數據包,要保存到~/1.PCap文件。
當需要結束時,用ctrl+z結束tcpdump命令,結束之后,緩存在內存的數據才會完全寫入文件。
6. 把文件拷貝到PC
用scp命令把文件拷貝到PC(或者ifunbox之類的工具拖拽更簡單):
scp root@192.168.11.211:~/1.PCap ./
7. 現在,可以用wireshark打開1.PCap分析數據了。
總之,tcpdump很強大,也很復雜。以上我故意沒有貼圖,貼圖會讓篇幅很大,有點嚇人。
三、最佳方式:rvictl命令
- 優點:簡單,而且可以抓所有網絡接口的數據;
- 缺點:似乎沒有,要求手機iOS5以上不算要求吧?如果說缺點,就是這個命令是Xcode的Command Line Tools 中的。
步驟:
1. 手機通過USB線連接到PC;
2. 查看手機的UDID,因為rvictl需要使用它。
可以從iTunes看:
紅色區域如果不是UDID,點擊它。
用Xcode看更方便,window—>devices,然后選擇手機,如圖:
3. 建立連接
格式:rvictl -s
例如:
這樣,PC上就多了一個虛擬的端口rvi0。可以用 -l參數查看有哪些虛擬端口:
好了,現在可以用wireshark捕捉這個端口的數據了。啟動wireshark,並選擇網絡接口,如圖:
無論手機使用的是wifi還是2g、3個、4g,現在你在wireshark里都能實時看到數據了:
是不是非常方便?
4. 最后,好習慣是用完關閉:
rvictl -x <UDID>
如:
原文地址:http://blog.csdn.net/hewy0526/article/details/50996984