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 起動時にいくつかの動的ライブラリが見つからないというエラーがでるので、ひとつ前のバージョンを使ってみています。

[ もどる ]