パケットキャプチャのためだけに PacketLogger アプリを立ち上げるのが面倒、あるいは Wireshark のほうが便利だ、とにかく CLI で完結したい、など。 実際には準備段階でどうしても避けられない手順があるが、それを除けば CLI でいい具合に Bluetooth のパケットキャプチャが可能。
準備
Bluetooth プロファイルを iOS にインストールする
面倒だが仕方がない。次のページから iOS 用の Bluetooth プロファイルをダウンロードし、設定画面でインストール手順を実行する。
このプロファイルは24時間で有効期限が切れてしまうので、前回のインストールから24時間経過している場合は再度インストールが必要。 面倒だが仕方がない。
libimobiledevice をインストールする
brew でサクッと。
このうち idevicebtlogger コマンドを使って Bluetooth パケットをキャプチャする。
stdout に吐き出すとバイナリが出てくるので、次の Wireshark のコマンドをかませて human readable にする。
Wireshark 上で見たいときは stdout ではなくファイルに保存すれば良い。
Wireshark をインストールする
brew でサクッと。
これで tshark コマンドがインストールされ、idevicebtlogger が出力する内容をテキストで読めるようになる。
CLI で Bluetooth のパケットを見る
1つのパケットを1行におさまるようなサマリーを見る場合。
$ idevicebtlogger -u <device_udid> -f pcap - | tshark -t ad -i -
すべてのパケットの詳細を全部出す場合。
$ idevicebtlogger -u <device_udid> -f pcap - | tshark -V -t ad -i -
Bluetooth のパケットをファイルに保存する場合
tshark はかませず、output 先のファイルを指定すればよい。
$ idevicebtlogger -u <device_udid> -f pcap foo.pcap
どうしても PacketLogger で読みたい場合はフォーマットの指定をせず、拡張子を .pklg にして保存すれば PacketLogger で読める。
$ idevicebtlogger -u <device_udid> foo.pklg