Wiresharkでスマートフォンアプリの通信パケット解析
Wiresharkを使ってパケット解析の練習したメモ。
iPod Touchを使っているが、iPhoneやAndroid端末でも同様にできるはず。
テーマ
以前、「乗換案内」のアプリ利用時に「UDID(端末固有のID)が無断でサーバへ送信されている」というのが問題になっていた。
ちょうど手元に古いバージョンの乗換案内があったので、Wiresharkを使ってアプリがUDIDを送信しているのかどうかを調べてみた。
準備
- Wiresharkをパケット解析用PCにインストール
Wireshark http://sourceforge.jp/projects/wireshark/ - USBの無線LANアダプタをパケット解析用PCにインストール
- ネットワーク構成
iPod Touchからインターネットへの通信は、USB無線LANアダプタから有線LANアダプタを通じて行われる。簡単な図にすると以下のような感じ。
- iPod TouchのUDIDの確認
iTunesでデバイスを選択するとシリアル番号が表示される。
シリアル番号をクリックすると、UDIDの表示に切り替わる。
手順
- WiresharkでCapture->Interface->監視するネットワークアダプタをStart 1
今回使用した無線USBLANアダプタでは、Optionで"Capture packets in promiscuous mode"のチェックを外さないと動作しなかった。 - iPod Touchの乗換案内で適当な経路を検索
- Wiresharkでパケットを検索(Ctrl+F)
以下のように検索。(検索する文字列はUDIDを入力)
HTTPのGETリクエストの中で、did=の後にUDIDが表示されていました。
- 乗換案内の最新版では、did=の後の文字列はUDIDではなくなっていた。
余談だが、このデータをURLデコードするとXXXXXXXX-XXXX-4XXX-AXXX-XXXXXXXXXXXX(Xは16進文字)という形式になる。これは、乱数から生成したUUID(Universally unique identifier)の形式。
Universally unique identifier - Wikipedia
このほかにも、ログインが必要なアプリでSSLが使われているかどうか、パスワードが平文で送られていないかなども調べられそう。
通信内容を見るだけなら意外とお手軽でした。
-
ネットワークアダプタはどちらを選択しても問題ないが、USB無線LANアダプタを選択したほうが解析が楽。有線LANアダプタにはパケット解析用PCからインターネットへの通信も含まれるので。 ↩︎