iPhone 実機のネットワーク通信をキャプチャする : Objective-C プログラミング
PROGRAM
iPhone 実機のネットワーク通信をキャプチャする
iPhone などの iOS デバイスのネットワークトラフィックを、Mac を使って監視することができます。
設定は簡単で、USB ケーブルで Mac と iOS デバイスとを接続したら、ターミナルから次のコマンドを実行します。
rvictl -s "デバイスの UUID"
接続している iOS デバイスの UUID を指定すると "Starting device xxxxxxxxxxx [SUCCEEDED]" というようなメッセージが表示されて、これでパケットをキャプチャする準備は完了です。
間違った UUID を指定すると、エラーも何も表示されずに rvictl コマンドが終了する様子でした。
上手くいくと、ネットワークインターフェイスとして "rvi0" といった名前のインターフェイスが出来上がるので、ここを流れる通信を監視します。
通信の監視は tcpdump とか Wireshark とかいったパケットキャプチャソフトウェアで行えます。
tcpdump で通信を監視したい場合には、例えば次のコマンドを実行します。
tcpdump -i rvi0
Wireshark で監視したい場合は、インターフェイスの選択の画面で "rvi0" を選択すれば大丈夫です。
ただ、自分の環境では、Wireshark 1.2.5 ではパケットがキャプチャされない感じでした。1.6.9 (Intel 64-bit) にアップデートしたところ正常にキャプチャできるようになったので、もしかするとバージョンによっては上手くいかないことがあるかもしれません。
Wireshark は、平成 24 年 8 月 14 日現在、最新版として 1.8.1 がリリースされていましたけど、このバージョンを自分の OS X Lion にインストールすると、Wireshark 起動時にいくつかの動的ライブラリが見つからないというエラーがでるので、ひとつ前のバージョンを使ってみています。
[ もどる ]