読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

WiresharkでiPhoneの通信をトレースする

サーバー担当の山内です。
今回はMacとiPhoneを使ったパケットトレースについてです。
Wiresharkを使えば簡単にiPhoneの通信を覗くことができます。

はじめに

今回用意するものは次のとおりです。

  • Mac OS X 10.8
  • iTunes(Xcode)
  • iPhone
  • USBケーブル
  • XQuartz
  • Wireshark

XQuartzのインストール

OS X Moutain Lion用のX11ライブラリ、XQuartz-2.7.5をインストールします。

XQuartz
https://xquartz.macosforge.org/landing/

Wiresharkのインストール

Wireshark-1.10.5をインストールします。

Wireshark
http://www.wireshark.org/download.html

Remote Virtual Interface(RVI)の作成

MacにiPhoneを接続したら、次のコマンドを実行してRemote Virtual Interface(RVI)を作成します。

$ rvictl -S udid

udid は、iTunesやXcodeのOrganizerから確認することができるiOS端末の識別子(UDID)です。

Untitled1

RVI作成に成功すると次のようなメッセージが表示されます。

Starting device udid [SUCCEEDED]

ifconfigコマンドで確認すると、rvi0が新たに作成されていることが確認できます。

$ ifconfig -l  
lo0 gif0 stf0 en0 p2p0 rvi0

パケットトレース

RVI作成後、Wiresharkを起動します。

$ wireshark

rvi0を選択、Startしてキャプチャを開始します。

start

tcpdumpコマンドを使う場合は、インターフェイスにrvi0を指定して実行します。

$ tcpdump -vi rvi0  
tcpdump: WARNING: rvi0: That device doesn't support promiscuous mode  
(BIOCPROMISC: Operation not supported on socket)  
tcpdump: WARNING: rvi0: no IPv4 address assigned  
tcpdump: listening on rvi0, link-type RAW (Raw IP), capture size 65535 bytes

キャプチャ終了後、RVIを破棄します。

$ rvictl -X udid  
  
Stopping device udid [SUCCEEDED]

このように簡単にキャプチャすることができますが、iPhoneの通信量は多いのですべての通信をキャプチャすると目的の情報が埋もれてしまいます。フィルターを使ってキャプチャする情報を絞ると目的の情報が得やすくなります。