本系列作品は定期的に公開されるメモであり、思いついたことを書き連ねる形式であり、フォーマットはかなり自由で、誤字が含まれる可能性があります。このシリーズでは、筆者が Apple のプライベートプロトコルのリバースエンジニアリングを学ぶ過程を記録しています。筆者もこの分野の初心者であり、間違いがあれば、皆さんのコメントで批判や指摘を歓迎します。
ハードウェア条件#
必須ではない条件:電磁シールドされた部屋(Apple デバイスの分析のみを持ち込み、分析の難易度を低減する)
ハードウェア:nRF52840 ドングル(nRF 互換のハードウェアでも構いませんが、私が購入したのは以下の画像の nRF52840 ドングルのソリューションであるイーベイテック E104-BT5040U です。価格は 34 元です)
ソフトウェア条件#
この記録は Windows を基にしており、Linux の設定方法は同様です。
- Python バージョン >= 3.5(推奨バージョンは 3.7、pyserial >= 3.5、psutil)
Python 環境(Python 環境を使用することをお勧めします。環境変数の設定は不要です) - WireShark
- nRF Sniffer for Bluetooth LE バージョン 4.1.1
nRF52840 ファームウェア:sniffer_nrf52840dongle_nrf52840_4.1.1.hex(nRF Sniffer for Bluetooth LE の hex ディレクトリにあります) - nRF Connect for Desktop (インストール後、Programmer をインストールしてください)
ファームウェアの書き込み#
nRF Connect for Desktop をダウンロードしてインストールし、Programmer をインストールしてください(以下の画像の矢印で示されています)
nRF Sniffer for Bluetooth LE をダウンロードして解凍し、固件ファイルとパスは以下の画像のようになります
nRF52840 ドングルを DFU ブートローダーモードに切り替えます(基板上のリセットボタンを押すだけです)、RESET ボタンは以下の画像の緑色の蛍光ペンで示されています。リセットランプが点灯します
Programmer を開き、デバイスを選択し、左側のファイルメモリレイアウトに固件ファイル sniffer_nrf52840dongle_nrf52840_4.1.1.hex をドラッグして、書き込みをクリックします
書き込みが完了すると、デバイス名が nRF Sniffer for Bluetooth に変わり、書き込み操作が完了します
WireShark のインストールと設定#
- WireShark の最新バージョンをデフォルトのオプションでインストールしてください。
- Python バージョン >= 3.5 をインストールしてください。バージョン 3.7 を推奨しますが、環境変数の設定は不要です。
- 作者のデバイスには、Chromium のコンパイルに使用される他の Python 環境があるため、それを汚染したくないため、Python venv を使用してそれらを分離する必要があります。いずれにせよ、ここでは venv の使用をお勧めします。
nRF Sniffer for Bluetooth LE は venv 環境をサポートしています(公式ドキュメントには記載されていません)。 - nRF Sniffer for Bluetooth LE を解凍した後、extcap パスの下にあるすべてのファイルを C:\Program Files\Wireshark\extcap にコピーします。黄色の蛍光ペンで示されているコピーする必要のあるファイルとフォルダがマークされています。
- 管理者権限で cmd を起動し、C:\Program Files\Wireshark\extcap に移動します。
-
Python.exe のフルパスを入力して、Python venv 環境を作成します。
%PYTHONFULLPATH%/Python.exe -m virtualenv env
-
nRF52840 ドングルを挿入し、
nrf_sniffer_ble.bat --extcap-interfaces
を実行します。以下の画像の蛍光ペンでマークされた部分が環境構築が成功したと見なすことができます。
- WireShark を開き、パケットキャプチャが成功し、Apple の BLE パケットがキャプチャされることを確認します。以下の画像のようになります。
上記の図では、プロトコルが APPLEBLE と表示されており、これは筆者が作成した Wireshark プラグインです。今後、プラグインは逐次改善され、公開される予定です。
Apple デバイスの BLE フィルタ条件はbtcommon.eir_ad.entry.company_id == 0x004c
です。
このシリーズはまだ続きます。