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の表示に切り替わる。
    UDID

手順

  • WiresharkでCapture->Interface->監視するネットワークアダプタをStart 1
    今回使用した無線USBLANアダプタでは、Optionで”Capture packets in promiscuous mode”のチェックを外さないと動作しなかった。
  • iPod Touchの乗換案内で適当な経路を検索
  • Wiresharkでパケットを検索(Ctrl+F)
    以下のように検索。(検索する文字列はUDIDを入力)
    Wiresharkでパケット検索
    HTTPのGETリクエストの中で、did=の後にUDIDが表示されていました。
    UDIDあり
  • 乗換案内の最新版では、did=の後の文字列はUDIDではなくなっていた。
    UDIDなし
    余談だが、このデータをURLデコードするとXXXXXXXX-XXXX-4XXX-AXXX-XXXXXXXXXXXX(Xは16進文字)という形式になる。これは、乱数から生成したUUID(Universally unique identifier)の形式。
    Universally unique identifier - Wikipedia

このほかにも、ログインが必要なアプリでSSLが使われているかどうか、パスワードが平文で送られていないかなども調べられそう。
通信内容を見るだけなら意外とお手軽でした。


  1. ネットワークアダプタはどちらを選択しても問題ないが、USB無線LANアダプタを選択したほうが解析が楽。有線LANアダプタにはパケット解析用PCからインターネットへの通信も含まれるので。 [return]

関連記事


  1. Windowsのコマンドラインから7-Zipでtar.gz形式に圧縮する
  2. exampleSiteのローカルサーバ起動やビルドを1行で実行する
  3. Macのzsh上でFn-Deleteが動作しない問題
  4. MavenでOSSのライセンス一覧を出力する
  5. Hugoはじめました
  6. バーコードを生成するJavaサーブレット (Barcode4J)
  7. Doxygen(+Graphviz)でソースコードのドキュメントを自動生成

tosi avatar
tosi
Web Application Engineer, Java / Spring / Azure / GCP
comments powered by Disqus