🔖

iPhoneやiPadの端末でのパケットキャプチャ

2023/06/18に公開

はじめに

トラブルシューティングでパケットキャプチャは1つの手段だと思いますが、一般的にはPCとWireShark/tcpdumpで実施することが多いかと思います。
実際のキャプチャ方法として、特に無線関連では
 ・Macに標準搭載されている「ワイヤレス診断」の「スニファ」機能を使う
 ・WindowsでOmniPeekとドライバを専用に改造した外付けNICを使う
 ・選ばれしチップとドライバが搭載されたLinuxで、GUIならばWireSharkのモニタモードで
  CLIならばtcpdumpでインターフェースを指定してキャプチャする
のどれかがほとんどではないだろうか。

しかしiPhoneやiPadの端末をキャプチャ端末として使うという方法があるらしく(以前から試そうと思っていてできてなかった)今回やってみたので作業をまとめてみる。

今回のテスト環境を簡単にまとめる
【PC】
 MacBook Pro, 13-inch, M2, 2022
 Apple M2, 24GB RAM
 mac OS Ventura (ver 13.4)
【端末】
 iPad Pro, 11-inch, 4thGen
 iPadOS ver 16.5 (20F66)

方法

1. iPhoneやiPadのUDIDを得る

iPhoneやiPadをMacに接続して、端末の「信頼」を設定すると、Mac側から端末の情報を得られる。
ここからUDID(Unique Device Identifier)を取得する。
やり方はいくつかありそう。

【1】Finderを使う方法
端末を接続して「信頼」などアクセス権限が取れればデバイスが表示される。
デバイス名「Y.Ken’s iPad Pro 2022」の下の部分はクリックすると順番に情報が変わり
そのうちの1つにUDIDも含む情報がある。

右クリックでその情報がコピーできるのが良い。

【2】Xcodeを使う方法
開発者ならばXcodeは入れていることだろうと思うので、Xcodeのデバイス管理からも実施可能。
アプリ開発などでVirtualなiPhoneやiPadを使っている場合でも、この方法でパケットキャプチャが行える。
Xcodeを開き、Window > Devices and Simulators で一覧を表示させる。

端末を選択して表示させ、上部の情報欄の「identifier」のところがUDIDに相当する模様。

ちなみにUDIDってあまり聞き馴染みがなく、スマホなど一般的な端末にあるUUID(Universally Unique IDentifier)のことかと思っていたが、Apple製品にある端末識別番号らしい。名称と略称がややこしい。

2. Macにキャプチャインターフェースを設定する

接続した端末を仮想インターフェースとして登録する。Remote Virtual Interfaceというらしい。
設定するには

rvictl -s <UDID>

を実行して

Starting device 00008888-0123456789A1234E [SUCCEEDED] with interface rvi0

のように表示されればOK。
仮想インターフェースがちゃんと設定できているか確認するには

rvictl -l

を実行して

Current Active Devices:

[1] 00008888-0123456789A1234E with interface (null)

のように表示されればOK。

3.WireSharkを使ってパケットキャプチャを実施する

仮想インターフェースがちゃんと認識されていれば、WireSharkのインターフェースの一覧に[SUCCEEDED]のあとに表示された名称「rvi0」のようなインターフェースができている。

あとは通常の有線のパケットキャプチャと同じ要領で、WireSharkを使ってキャプチャ&フィルタ&保存&解析などが可能。

tcpdumpを使うことももちろん可能。tcpdumpならばすべてコマンドで完結する。

4.仮想インターフェースの停止

端末をMacから抜いてしまうというのも手だろうが、一応ソフトウェア的にはインターフェースの削除までやって原状復帰となると思うので書いておく。

停止させるには

rvictl -x <UDID>

を実行する。こちらも[SUCCEEDED]と出れば、正常に停止できている。


参考文献
https://community.cisco.com/t5/tkb-コラボレーション-ドキュメント/iphone-ipad-でパケットキャプチャを行う方法/ta-p/3159212

Discussion