如何在 OS X 上架設本地代理伺服器對 iOS 流量進行抓包分析?

相關問題:如何在 Android 手機上實現抓包?


看了一下相關問題,真心覺得 OS X 人性化~

OS X 提供了 Internet Sharing,直接建一個熱點,共享給任何設備都可以,只要是連接到該 WI-FI 熱點上的設備,流量都得經過該熱點,嗅探器裝在熱點上,想抓什麼包抓什麼包,比單純的代理方便多,而且可以抓的包種類也更多。

當然,你的 MBP 得有有線可以將網路共享才行。。。

WIFI Options 可以設置點加密啥的。

開啟後就這樣了。

手機連接好剛才的 WIFI。

所有的網路流量都經過 MBP 中轉,嗅探起來就方便了。

打開神器 Wireshark,依照圖示選擇嗅探的埠。

Start 完了就等著收包了,監聽 HTTP 啥的都跟玩兒似的,不管是啥協議都能搞定,具體的用法嘛,就是另外一個問題了。


直接用代理的方式會抓到廢柴數據
正確方法如下:

  1. 通過USB口將iPhone連接到Mac上。
  2. 使用Xcode的organizer工具獲取到iPhone的UDID
  3. 使用rvictl命令創建RVI介面(remote virtual interface),使用iPhone的UDID作為參數。

    $ rvictl -s &

    如果想捕獲多個設備的網路包,可以使用上述命令創建多個設備的RVI,傳遞每個iOS設備的UDID作為參數即可。
    RVI虛擬介面的命名規則為rvi0,rvi1,rvi2,…,可使用ifconfig命令查看

    $ ifconfig rvi0
    rvi0: flags=3005& mtu 0

  4. 在Mac上使用任意抓包工具tcpdump、wireshark等,監聽創建的rvi介面即可。
  5. 使用完之後需要將創建的虛擬介面移除

    $ 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 那樣巨大的市場佔有率?

TAG:macOS | iOS | 代理伺服器 | 抓包 |