iOS のキャプチャ
iPhone / iPad のキャプチャは、これまでずっと悩みの種でした。一般的なツールはたいてい脱獄を要求するか、プロキシしか設定できません(それでもプロファイルと証明書のインストールが必要で、証明書ピンニングを使うアプリは依然としてキャプチャできません)。iOS のキャプチャは脱獄不要の3つの方法を提供します。「設定ゼロでシステムのリクエストを見る」から「デバイス全体の全トラフィック」、さらに「単一アプリの完全な平文」まで。このいずれかがあなたの目的に届きます。
1. 共通の準備
Section titled “1. 共通の準備”- デバイスを接続する:データケーブルで iPhone / iPad をコンピュータに接続し、デバイス側で信頼をタップします。
- 脱獄は不要:3つの方法はいずれも脱獄していないデバイス向けです。
- 新しいシステムに対応:新しいバージョンの iOS(iOS 17 以降を含む)は新しいデバイスチャネルに切り替わりましたが、ここでは接続もキャプチャも問題なく動作します。
- 同じデバイスがネットワーク上にも表示される場合は、それに応じて USB/ネットワークの入口を選んでください。
2. 3つの方法の選び方
Section titled “2. 3つの方法の選び方”| あなたのニーズ | 使うべき方法 | 見えるもの | 証明書のインストール/再署名は必要? |
|---|---|---|---|
| システムが送信した HTTPS リクエスト(アドレス/ステータス/ヘッダー)をすばやく見たい | システムレベルキャプチャ | 通常のアプリでも動作(通常のアプリはボディを見られない) | どちらも不要。診断プロファイルのみ |
| デバイス全体の全トラフィック(非 HTTP、ハンドシェイク/SNI を含む) | NIC キャプチャ | 完全なデータ(デフォルトは暗号文、必要に応じて復号可能) | 暗号文を見るだけなら不要。特定アプリを復号する場合のみ再署名が必要 |
| 特定アプリの完全な平文のやり取り(ボディを含む) | アプリ層キャプチャ | 単一アプリの完全な平文 | 対象アプリを開発用証明書で再署名する必要あり |
3つとも脱獄は不要です。システムレベルキャプチャは特に手間がかかりません。通常のアプリや App Store のアプリでさえ、どの HTTPS アドレスにリクエストしているかを見られます。これは脱獄していない iPhone では一般的なツールにはできないことです。
3. システムレベルキャプチャ:最も手軽で、通常のアプリでも動作
Section titled “3. システムレベルキャプチャ:最も手軽で、通常のアプリでも動作”証明書のインストールも、プロキシの設定も、証明書ピンニングへの対処もなしに、この iPhone がどんな HTTPS リクエストを送ったのかをすばやく見たい。これが最も手軽な方法です。
- システムが送信する HTTP(S) のトランザクションを一覧表示します:リクエストメソッド、完全な URL(HTTPS でもアドレスは平文)、ステータスコード、リクエストヘッダーとレスポンスヘッダー。
- CA 証明書のインストール不要、プロキシの設定不要、証明書ピンニングへの対処不要。
- どこまで見えるかは、システム診断ログそのものによって制限されます。
- 通常のアプリと App Store のアプリ:通常はリクエストのアドレスとリクエストヘッダーしか見られません。
- 開発用証明書で署名されたアプリ:リクエスト/レスポンスのボディ全体を見られます。
前提条件:対応するデバイス診断プロファイルをインストールする必要があります(一度だけで十分)。
4. NIC キャプチャ:このデバイス上のすべてを見る
Section titled “4. NIC キャプチャ:このデバイス上のすべてを見る”アプリやプロトコルを問わず、デバイスのネットワークトラフィックをすべてキャプチャします。非 HTTP の QUIC や独自プロトコルも含みます。
- デフォルトで見えるもの:デフォルトでは暗号文パケット+メタデータ(宛先アドレス、ポート、TLS ハンドシェイクの SNI ホスト名)で、「このデバイスがどの場所にどんなプロトコルで接続したか」をはっきり見るには十分です。
- 平文がほしい場合:対象アプリに対して「このプログラムを復号」を使うと、その平文を復号します。これにはアプリが開発用証明書で再署名されている必要があります。
5. アプリ層キャプチャ:単一アプリの完全な平文
Section titled “5. アプリ層キャプチャ:単一アプリの完全な平文”単一のアプリを対象とし、そのアプリが送受信する**完全な平文(ボディを含む)**を取得します。アプリの内部から読み取るため、証明書ピンニングでも止められません。
- ターゲットプログラムを再起動する:先にアプリを閉じて起動し直せば、その起動直後のトラフィックもキャプチャできます。
- 平文をデコードできないときは「ソケットトラフィック」をフォールバックとしてオンにする:静的リンクしている/独自ライブラリを使うアプリで、通常の方法では平文が得られない場合、このスイッチをオンにすると、より低レベルの経路でデータを取得します。
- アプリ一覧で選択できるのは開発用証明書で再署名されたアプリのみで、それ以外はグレーアウトされます。
前提条件:対象アプリは開発用証明書で再署名されている必要があります。App Store のアプリやシステムアプリは、まず再署名してからでないと対象にできません。
6. プロキシキャプチャも使える
Section titled “6. プロキシキャプチャも使える”上記の3つの方法に加えて、iPhone / iPad ではプロキシキャプチャも使えます。デバイスの Wi-Fi プロキシをこのマシンに向け、ルート証明書をインストールすれば、コンピュータと同じように HTTPS の平文をキャプチャでき、書き換えやリプレイの機能一式も使えます。システムプロキシを経由するアプリのデバッグや、モバイルのリクエストをルールで書き換え・リプレイしたい場面に向いています。
- 証明書のインストール:スマホで QR コードをスキャンしてワンタップでインストール → 証明書の管理とインストール
- キャプチャと書き換えの機能:→ プロキシキャプチャ
7. iOS のキャプチャを使う場面
Section titled “7. iOS のキャプチャを使う場面”- 「アプリがどのエンドポイントにリクエストし、何が返ってきたか」をすばやく調べるなら、システムレベルキャプチャが最も簡単で、通常のアプリでも動作します。
- デバイス全体の全トラフィック(非 HTTP を含む)を見たいときは、NIC キャプチャを使います。
- 対象アプリを再署名でき、その完全な平文のボディがほしいときは、アプリ層キャプチャを使います。
- 見ながら同時に編集したい(モバイルのリクエストを書き換え/リプレイ)ときは、プロキシキャプチャを使います。
プロキシキャプチャに戻る · 関連:データの表示とデコード · 証明書の管理とインストール