如何在 OS X 上架設本地代理伺服器對 iOS 流量進行抓包分析?
相關問題:如何在 Android 手機上實現抓包?
看了一下相關問題,真心覺得 OS X 人性化~
OS X 提供了 Internet Sharing,直接建一個熱點,共享給任何設備都可以,只要是連接到該 WI-FI 熱點上的設備,流量都得經過該熱點,嗅探器裝在熱點上,想抓什麼包抓什麼包,比單純的代理方便多,而且可以抓的包種類也更多。
當然,你的 MBP 得有有線可以將網路共享才行。。。
WIFI Options 可以設置點加密啥的。
開啟後就這樣了。
手機連接好剛才的 WIFI。
所有的網路流量都經過 MBP 中轉,嗅探起來就方便了。
打開神器 Wireshark,依照圖示選擇嗅探的埠。
Start 完了就等著收包了,監聽 HTTP 啥的都跟玩兒似的,不管是啥協議都能搞定,具體的用法嘛,就是另外一個問題了。
直接用代理的方式會抓到廢柴數據
正確方法如下:
- 通過USB口將iPhone連接到Mac上。
- 使用Xcode的organizer工具獲取到iPhone的UDID
- 使用rvictl命令創建RVI介面(remote virtual interface),使用iPhone的UDID作為參數。
$ rvictl -s &
如果想捕獲多個設備的網路包,可以使用上述命令創建多個設備的RVI,傳遞每個iOS設備的UDID作為參數即可。
RVI虛擬介面的命名規則為rvi0,rvi1,rvi2,…,可使用ifconfig命令查看
$ ifconfig rvi0
rvi0: flags=3005&mtu 0
- 在Mac上使用任意抓包工具tcpdump、wireshark等,監聽創建的rvi介面即可。
- 使用完之後需要將創建的虛擬介面移除
$ rvictl -x &
我今天…才知道…iOS自帶抓包工具…根本不需要越獄etc…
如果是OSX系統,可以試試這個 https://github.com/mountainstorm/MobileDevice
USB連上手機,執行 python2 MobileDevice pcap output.pcap 然後就抓包成pcap格式了…
附圖,隨便抓了個包…
應該也能用libimobiledevice這個包做相同的事情…根據某些黑文檔的說法甚至可以over WiFi…先玩一下看看…
可以安裝 Charles Web debugging proxy。
安裝後,將 iOS 的 HTTP proxy 設置為 Mac 的 IP,默認埠 8888 即可實現抓包。不需要有線連接和網路共享,只要 iOS 設備和 Mac 在同一區域網即可。走下題,用代理的方案不好抓 3G 網路下的包。
我的做法是越獄後在終端下運行 tcpdump,然後把搜集到的數據用 Cocoa Packet Analyzer 打開分析。
Wireshark 也是可以的,不過 UI 太丑了。
沒有越獄的話用Wireshark或Burp Suite + HTTP代理。
有越獄的話直接上Snoop-it
mitmproxy
可以使用Charles: http://www.charleshttp://proxy.com/, 功能非常強大, 操作比較簡單。
fiddler有mac版的,依賴mono 我沒試過 jmeter做代理錄http請求
charles 和fiddler 只能監控http請求, 對tcp 或udp無能為力,建議還是使用wireshark + wifi共享的方式。直接通過虛擬介面也可以監控,但是如你要用來做socket代理就不行了,畢竟wireshark不像charles或者 fiddler那樣能轉發請求。
推薦閱讀:
※Mac 下需要整理磁碟碎片嗎?
※Windows 7 下如何做到像蘋果系統那樣瀏覽器窗口根據網頁大小自適應?
※藉助 Alfred 的 Workflows 功能可以做哪些好玩的事情?
※為什麼有人會認為用蘋果產品就是裝逼?蘋果為何會給人留下這樣的印象?
※Mac 為何不能擁有 iPhone 那樣巨大的市場佔有率?