サーバー担当の山内です。
今回は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)です。
RVI作成に成功すると次のようなメッセージが表示されます。
Starting device udid [SUCCEEDED]
ifconfigコマンドで確認すると、rvi0が新たに作成されていることが確認できます。
$ ifconfig -l lo0 gif0 stf0 en0 p2p0 rvi0
パケットトレース
RVI作成後、Wiresharkを起動します。
$ wireshark
rvi0を選択、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の通信量は多いのですべての通信をキャプチャすると目的の情報が埋もれてしまいます。フィルターを使ってキャプチャする情報を絞ると目的の情報が得やすくなります。