at_yasu's blog

ロード的なことを

iOS Device のパケットをキャプチャー

これ、書いていいのか迷ったけど、どうもQA1776 (参考: QA1176 - Remote Virtual Interface を使ったパケットトレース | Cocoaの日々情報局) というところにあったみたいなので投下。

WWDC2011 のプレゼン資料に「Core Networking in-depth」というのがあり、その中に「Remote Packet Capture」というのがあります。そこには、OSX が iOS device のパケットを拾ってくるよ、と書いてます。MiMとかする時にはちと使えないかもね。



で、必要なのは、 iOS5 SDK が入ったMacと、iOS5デバイスと、それらをつなぐUSBケーブル。

コマンドはシンプルで、仮想デバイスを作成して、そいつをtcpdumpで拾ってくる感じ。


1. 仮想デバイスを作成して ifconfig で確認。仮想デバイスの作成にroot権限はいらないっぽい。

$ rvictl -s <UDID>

Starting device <UDID> [SUCCEEDED]

$ ifconfig
..
rvi0: flags=3005<UP,DEBUG,LINK0,LINK1> mtu 0
$

2. パケットキャプチャ

結構ズラズラと、 https の通信が出てきますので、portとか宛先を確認するか、wireshakeとか使うといいかも

# tcpdump -n -i rvi0


3. 仮想デバイスの削除

$ rvictl -x <UDID>

Stopping device <UDID> [SUCCEEDED]

$