吃枣药丸

吃枣药丸

蘋果BLE逆向工程(一)——Sniffer環境搭建

本系列作為定期發布的筆記,想到哪寫到哪,格式很隨意,可能有錯別字。記錄作者學習對 Apple 私有協議進行逆向工程的過程。作者也是在這方面的新手,如有錯誤,歡迎大家在評論區批評指正。

硬件條件#

非必要條件:做好電磁屏蔽的房間(只帶入需要分析的 Apple 設備,減少分析的難度)
硬件:nRF52840 Dongle(兼容 nFR 的硬件也可以,我購買的是如下圖來自淘寶的 nRF52840 Dongle 方案的 億佰特 E104-BT5040U,人民幣¥34 元)
硬件

軟件條件#

本記錄基於 Windows,Linux 配置方法類似
一、Python Version >= 3.5(推薦版本 3.7,pyserial >= 3.5,psutil)
Python env(推薦使用 Python env,無需配置環境變量)
二、WireShark
三、nRF Sniffer for Bluetooth LE Version 4.1.1
nRF52840 firmware :sniffer_nrf52840dongle_nrf52840_4.1.1.hex(位於 nRF Sniffer for Bluetooth LE 的 hex 目錄下)
四、nRF Connect for Desktop (安裝完成後安裝 Programmer)

燒寫 Firmware#

下載 nRF Connect for Desktop 安裝後,安裝 Programmer(如下圖箭頭所示)

programer
下載 nRF Sniffer for Bluetooth LE 並解壓,固件文件及路徑如圖所示

firmware

將 nRF52840 Dongle 切換至 DFU Bootloader 模式(按板子上的 reset 按鈕即可),RESET 按鈕位於如下圖綠色螢光筆處,Reset 燈亮起

hardware_reset

打開 Programmer ,選擇設備並在左側 File memory layout 拖入固件文件 sniffer_nrf52840dongle_nrf52840_4.1.1.hex,點擊 Write 寫入

DFUMode
寫入完成後設備名會變為 nRF Sniffer for Bluetooth,燒寫操作這樣就算完成了

安裝配置 WireShark#

一、默認選項安裝 WireShark 最新版本即可。

二、安裝 Python Version >= 3.5,推薦 3.7 版本,無需配置環境變量。

三、由於作者設備上還有其他 Python 環境(用於編譯 Chromium 的),作者不想污染它,需要使用 Python venv 使他們隔離開來,不管怎樣,這裡推薦使用 venv

nRF Sniffer for Bluetooth LE 本身支持 venv 環境(官方文檔未說明)

四、拷貝 nRF Sniffer for Bluetooth LE 解壓後的 extcap 路徑下的所有文件到 C:\Program Files\Wireshark\extcap,黃色螢光筆標記了必須要拷貝的文件及文件夾

sniffersdk

五、管理員權限啟動 cmd,切換到 C:\Program Files\Wireshark\extcap

chdir

六、輸入 Python.exe 的全路徑 創建 Python venv 環境
%PYTHONFULLPATH%/Python.exe -m virtualenv env
pythonenv

八、插入 nRF52840 Dongle,執行 nrf_sniffer_ble.bat --extcap-interfaces
顯示如下圖螢光筆標識部分就可以認為環境搭建成功

success

九、打開 WireShark 驗證抓包,能夠成功抓到 Apple 的 BLE 包,如下圖

with_plg

上圖顯示協議為 APPLEBLE,這是作者編寫的 Wireshark 插件,後續會逐漸完善後放出

蘋果設備的 BLE 過濾條件為btcommon.eir_ad.entry.company_id == 0x004c

本系列未完待續。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。