🐕

iOSデバイスとBluetoothデバイス間の無線通信をキャプチャする

2022/10/27に公開

はじめに

この記事ではiOSデバイスとBluetoothデバイス間の無線通信をキャプチャする手順について説明します。今回は以下の組み合わせで動作確認を行いました。

  • MacBook Pro 14インチ 2021年モデル - macOS 12.6.1 Monterey
  • iPhone 13 - iOS 15.7
  • Eufy Smart Scale C1 Bluetooth体重計

Step 1. iOS側の準備

  1. iOSのSafariでApple DeveloperのProfiles and Logsを開きます。
  2. 一覧の中からiOSのProfileをタップします。
  3. Apple IDでサインインします。普段利用しているApple IDとApple DeveloperのApple IDどちらでサインインしてもOKです。
  4. 「このWebサイトは構成プロファイルをダウンロードしようとしています。許可しますか?」と表示されたら「許可」をタップします。
  5. 設定アプリを開いて一般→VPNとデバイス管理→Bluetooth Logging for iOSを開きます。
  6. 「インストール」をタップします。パスコードの入力や使用許諾への同意が求められます。
  7. インストールが完了したら一度デバイスの電源をきります。設定→一般→システム終了をタップしてください。
  8. iOSデバイスの電源ボタンを押します。起動したらiOS側の準備は完了です。

※Bluetooth Logging for iOSプロファイルはインストールしてから3日経過すると自動的に削除されます。通信が突然キャプチャできなくなった場合はプロファイルが削除されていないか確認してください。

Step 2. macOS側の準備

  1. SafariでApple Developerのダウンロードページを開きます。
  2. Additional Tools for Xcode 14のView Detailsをクリックするとダウンロード用のリンクが表示されるのでクリックします。名前にBetaやRelease Candidateがついているものを選ばないように注意してください。
  3. dmgファイルのダウンロードがはじまります。完了したらファイルを開いてHardwareの中にあるPacketLogger.appをApplicationフォルダにドラッグしてください。
  4. PacketLogger.appを開きます。初回起動時はネットワークに関連する警告のダイアログが表示されるので許可してください。
  5. PacketLogger.appは開いた直後からいきなりキャプチャが開始されます。初期状態はmacOSの通信がキャプチャされるのでCommand + Qキーを押してアプリを閉じてください。これでmacOS側の準備は完了です。

※この記事では動作確認のためXcode 14.0.1(14A400)を使用しました。Additional Toolsのバージョンは各自のXcodeのバージョンに合わせて適宜読み替えてください。

Step 3. 通信をキャプチャする

  1. iOSデバイスとmacOSデバイスをLightning to USBケーブルで接続します。
  2. PacketLogger.appを開きます。アプリを開いた直後からいきなりキャプチャが開始されるので、Command + Wキーを押して最前面のウィンドウを閉じます。
  3. メニューのFile→New iOS Traceを選択します。ウィンドウが開いた直後からiOSデバイスとBluetoothデバイスの間を流れるデータのキャプチャが開始されます。
  4. iOSデバイスとBluetoothデバイスを接続して操作してください。余計な通信が混ざらないようにBluetoothイヤホンなどの周辺機器の電源を切ることをおすすめします。
  5. Command + Rキーを押してキャプチャを停止します。
  6. メニューのFile→Save Asを選択します。キャプチャした結果は.btsnoopファイルとして保存できます。
  7. ファイルをWiresharkなどのツールで読み込んで解析してください。

参考資料

  1. A New Way to Debug iOS Bluetooth Applications - Bluetooth® Technology Website
  2. Bluetooth Logging Instructions - Apple Developer
  3. What's New in Core Bluetooth - WWDC19 - Videos - Apple Developer
  4. Bluetooth Packet Loggerでリバースエンジニアリング - 野生のプログラマZ
  5. iOS 13でCore Bluetoothパケットキャプチャ - Qiita

Discussion