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からインターネットへの通信も含まれるので。 ↩︎

関連記事


  1. TerraformでGitHub ActionsのIPリストを参照する
  2. Dependency Review Actionのライセンスチェック機能に関する調査メモ
  3. クエリパラメータを使ってお手軽にGitHubのプルリクを作成する
  4. 他の人には読めない形式でGitHubのSecretsの値を読み出す
  5. GitHub Actionsでプルリクのコメントに複数行テキストを投稿する
  6. GitHub Actionsでエラーの時だけ特定の処理を実行する
  7. Tera Termのマクロで、パスワードを扱う操作を自動化する

comments powered by Disqus