猫でもわかるWebプログラミング

試行錯誤しながらエンジニア(プログラマー)として働く猫のブログ。技術的な話や、働き方の話、読書録とか、試行錯誤している日常の話。

Macに接続したiPhoneの通信内容をWiresharkで見る

はじめに

Wireshark には最大の欠点があります。「通信の中身は基本的には見られない」ことです。つまり、APIのレスポンスボディなどは見られません。

https でやり取りをしていた場合、通信は暗号化されているため、 Wireshark ではこれを解読することができません。リクエスト先のIPアドレスや、プロトコルなど、暗号化の対象でないフィールドは Wireshark で見ることができますが、肝心のレスポンスボディは見られません。

レスポンスの内容など見たい場合は mitmproxy を使うとよいです。mitmproxy の使い方の記事はまた別途記事にします。

以下のサイトを参考にしました

qiita.com

環境

  • iPhone 11 Pro
  • macOS 10.14.6

手順

Wiresharkのインストール

brewでインストールするのがよい。途中でパスワードを要求されるのでパスワードを入力する。

  • 公式ページからインストラーをダウンロードしてインストールすると、なにかの権限が足りないっぽくてうまく行かないので、brewを使ってインストールするのが一番良い。

Remote Virtual Interface の設定

iPhoneのUDIDの確認

調べると色々な確認方法が出てくるが、iTunesから確認するのが一番確実。

非常に分かりづらいが、iPhoneをPCにつなげて、「シリアル番号」と書いてあるところを何回かクリックすると UDID が見られる。

「シリアル番号」と書いてあるところをクリック
「シリアル番号」と書いてあるところをクリック

UDID が出たところで、メニューから「UDIDをコピー」を選択する。

UDIDをコピー
UDIDをコピー

この手順でやらないと、非常にコピペミスしやすいので注意。

他のサイトでは iTunes を使わない方法も紹介されているが、方法によって表示される UDID が異なったり、コピペがうまくできなかったりするので、絶対この方法でやったほうが良い

次の rvictl コマンドがうまく動かないのはほぼ 100% UDID の間違いやコピペミスなので注意。

Remote Virtual Interface の設定

以下のコマンドを叩くだけ

$ rvictl -s <コピーしたUDID>

Starting device <コピーしたUDID> [SUCCEEDED] with interface rvi0

Starting device... の文字が出ない場合は失敗しているので注意。

また、成功すると、 rvictl -l で出てくる。

$ rvictl -l

Current Active Devices:

    [1] <UDID> with interface rvi0

以下のような場合は成功していない。

  • rvictl コマンドを叩いた結果何も返ってこない
  • rvictl コマンドのヘルプが出てきてしまう

このような場合、コマンドが間違っていなければ、 UDID が間違っているということになる。もう一度注意点をよく読んで UDID を確認すること。UDID 確認の節でも書いたが、確認方法によって表示される UDID が異なったり、コピペを非常にミスしやすい構造になっているので本当に注意。

Wireshark で確認

Wireshark を開いてキャプチャオプションをクリック。

rvictl コマンドで Starting device <UDID> [SUCCEEDED] with interface rvi0 と言われていたので、rvi0 を選択して「開始」

参考