iPhoneの通信をパケットキャプチャで傍受する

既に同様の話題は他のブログで既出ですがメモとして。

パケットキャプチャは定番のWireSharkを使います。
また、クライアントはMacを想定しています。Windowsの場合は別途代替方法が必要になります。

まず、iPhoneをUSB LightningケーブルでPCと接続します。

次に、iPhoneのUUIDを調べます。
Xcodeを使用する場合

Xcodeを起動 → Window → Devices でDevicesウィンドウを表示。左側のリストから接続されているiPhoneデバイスを選択します。
Device Information内のIdentifierの値をクリックして選択でコピー。



Xcodeを使用しない場合
iTunesでも同様の情報を表示できます。
iTunesを起動 → 接続デバイス画面で端末を選択し、概要画面を表示します。
ここで、「シリアル番号」と記載されている部分をクリックすると表示が変わり、UUIDが表示されます。
この状態で右クリックすると、コンテキストメニューで「コピー」と表示されるのでそれをクリックすると、値がクリップボードにコピーされます。


で、UUIDをコピーしたら適当なターミナルを起動して、下記のコマンドを実行します。

rvictl -s <UUID>

<UUID>の部分にはさっきコピーしたUUIDを貼り付けます。

実行して「Starting device xxxxxxxxxxx [SUCCEEDED]」と表示されればOKです。


続いて、WireSharkを起動します。



メニューの Capture から、 Interfaces を選択します。または、ショートカットでControl+Iでも良いです。


続いて表示されるダイアログから、「rvi0」というインターフェースを選び、チェックを付け、Startボタンをクリックするとキャプチャが開始されます。



あとはキャプチャ中はiPhoneを操作しながらキャプチャ結果を確認していきます。
HTTP通信について見たい場合は、Filterに「http」と入力し、「Apply」ボタンを押すことでより見やすくなります。

ほどほどにキャプチャ出来たら、赤い四角の停止ボタンを押してキャプチャを終了します。

最後に、下記のコマンドを実行して、先ほど作ったiPhoneとの接続インタフェースを停止します。

rvictl -X <UUI>

<UUID>の部分には先ほどのUUIDを貼り付けます。

実行して「Stopping device xxxxxxxxxxx [SUCCEEDED] with interface rvi0」と表示されれば切断完了です。



このような簡単な手順で、iPhoneの通信内容の傍受は簡単に行えます。
なので、iPhoneアプリを作る際は、設計の際に通信内容は傍受されても困らない形で設計する必要があります。

最近作ったアプリの話

先日、コナミ社の提供している コナステ のダウンロードコンテンツゲームを1クリックで起動できるアプリを作り、公開した。 Ks Game Launcher  ( Github ) 作った理由として、インストール時に作成されたショートカットをクリックするとブラウザが起動し、ログインし...