はじめに
Wireshark には最大の欠点があります。「通信の中身は基本的には見られない」ことです。つまり、APIのレスポンスボディなどは見られません。
https でやり取りをしていた場合、通信は暗号化されているため、 Wireshark ではこれを解読することができません。リクエスト先のIPアドレスや、プロトコルなど、暗号化の対象でないフィールドは Wireshark で見ることができますが、肝心のレスポンスボディは見られません。
レスポンスの内容など見たい場合は mitmproxy を使うとよいです。mitmproxy の使い方の記事はまた別途記事にします。
以下のサイトを参考にしました
環境
- iPhone 11 Pro
- macOS 10.14.6
手順
Wiresharkのインストール
brewでインストールするのがよい。途中でパスワードを要求されるのでパスワードを入力する。
- 公式ページからインストラーをダウンロードしてインストールすると、なにかの権限が足りないっぽくてうまく行かないので、brewを使ってインストールするのが一番良い。
Remote Virtual Interface の設定
iPhoneのUDIDの確認
調べると色々な確認方法が出てくるが、iTunesから確認するのが一番確実。
非常に分かりづらいが、iPhoneをPCにつなげて、「シリアル番号」と書いてあるところを何回かクリックすると 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
を選択して「開始」
参考
- Macに接続したiPhoneのパケットをキャプチャする(Wireshark) - Qiita
- これを参考にした。非常によい。
- iPhone でパケットキャプチャしてみる(2019年12月版) - blog
- 2019年の資料だが、iTunesからやったほうが良いので、↑の方の資料を参考にしたい
- iPhone XSシリーズからのUDID・識別子の確認方法 - Qiita
- UDID の確認方法が色々書いてある
- Devices and Simulators を使う方法でも iTunes の場合と同じものが表示されるが、ウィンドウの横幅を広げないと、UDID全体が表示されていなかったりするので注意すること。(僕はこれのせいでコピペミスしており、ずっと悩んでいた。)
- [OSX] rvictlでなにもおこらないときの解決策 | 黒くまのおむすび🍙
- 解決策 UDIDを小文字にする と書いてあるが、僕の場合は小文字にしなくてもできた。
- 文字列をサクッと小文字にするには、シェルで
tr '[A-Z]' '[a-z]' <<< <UDID>
- https://developer.apple.com/documentation/network/recording_a_packet_trace
- Apple 公式のドキュメント