吃枣药丸

吃枣药丸

Apple BLE 逆向工程(一)——Sniffer環境構築

本系列作品は定期的に公開されるメモであり、思いついたことを書き連ねる形式であり、フォーマットはかなり自由で、誤字が含まれる可能性があります。このシリーズでは、筆者が Apple のプライベートプロトコルのリバースエンジニアリングを学ぶ過程を記録しています。筆者もこの分野の初心者であり、間違いがあれば、皆さんのコメントで批判や指摘を歓迎します。

ハードウェア条件#

必須ではない条件:電磁シールドされた部屋(Apple デバイスの分析のみを持ち込み、分析の難易度を低減する)
ハードウェア:nRF52840 ドングル(nRF 互換のハードウェアでも構いませんが、私が購入したのは以下の画像の nRF52840 ドングルのソリューションであるイーベイテック E104-BT5040U です。価格は 34 元です)
hardware

ソフトウェア条件#

この記録は Windows を基にしており、Linux の設定方法は同様です。

  1. Python バージョン >= 3.5(推奨バージョンは 3.7、pyserial >= 3.5、psutil)
    Python 環境(Python 環境を使用することをお勧めします。環境変数の設定は不要です)
  2. WireShark
  3. nRF Sniffer for Bluetooth LE バージョン 4.1.1
    nRF52840 ファームウェア:sniffer_nrf52840dongle_nrf52840_4.1.1.hex(nRF Sniffer for Bluetooth LE の hex ディレクトリにあります)
  4. nRF Connect for Desktop (インストール後、Programmer をインストールしてください)

ファームウェアの書き込み#

nRF Connect for Desktop をダウンロードしてインストールし、Programmer をインストールしてください(以下の画像の矢印で示されています)

programer
nRF Sniffer for Bluetooth LE をダウンロードして解凍し、固件ファイルとパスは以下の画像のようになります

firmware

nRF52840 ドングルを DFU ブートローダーモードに切り替えます(基板上のリセットボタンを押すだけです)、RESET ボタンは以下の画像の緑色の蛍光ペンで示されています。リセットランプが点灯します

hardware_reset

Programmer を開き、デバイスを選択し、左側のファイルメモリレイアウトに固件ファイル sniffer_nrf52840dongle_nrf52840_4.1.1.hex をドラッグして、書き込みをクリックします

DFUMode
書き込みが完了すると、デバイス名が nRF Sniffer for Bluetooth に変わり、書き込み操作が完了します

WireShark のインストールと設定#

  1. WireShark の最新バージョンをデフォルトのオプションでインストールしてください。
  2. Python バージョン >= 3.5 をインストールしてください。バージョン 3.7 を推奨しますが、環境変数の設定は不要です。
  3. 作者のデバイスには、Chromium のコンパイルに使用される他の Python 環境があるため、それを汚染したくないため、Python venv を使用してそれらを分離する必要があります。いずれにせよ、ここでは venv の使用をお勧めします。
    nRF Sniffer for Bluetooth LE は venv 環境をサポートしています(公式ドキュメントには記載されていません)。
  4. nRF Sniffer for Bluetooth LE を解凍した後、extcap パスの下にあるすべてのファイルを C:\Program Files\Wireshark\extcap にコピーします。黄色の蛍光ペンで示されているコピーする必要のあるファイルとフォルダがマークされています。

sniffersdk

  1. 管理者権限で cmd を起動し、C:\Program Files\Wireshark\extcap に移動します。

chdir

  1. Python.exe のフルパスを入力して、Python venv 環境を作成します。
    %PYTHONFULLPATH%/Python.exe -m virtualenv env
    pythonenv

  2. nRF52840 ドングルを挿入し、nrf_sniffer_ble.bat --extcap-interfacesを実行します。以下の画像の蛍光ペンでマークされた部分が環境構築が成功したと見なすことができます。

success

  1. WireShark を開き、パケットキャプチャが成功し、Apple の BLE パケットがキャプチャされることを確認します。以下の画像のようになります。

with_plg

上記の図では、プロトコルが APPLEBLE と表示されており、これは筆者が作成した Wireshark プラグインです。今後、プラグインは逐次改善され、公開される予定です。

Apple デバイスの BLE フィルタ条件はbtcommon.eir_ad.entry.company_id == 0x004cです。

このシリーズはまだ続きます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。