本系列作为定期发布的笔记,想到哪写到哪,格式很随意,可能有错别字。记录作者学习对 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(如下图箭头所示)
下载 nRF Sniffer for Bluetooth LE 并解压,固件文件及路径如图所示
将 nRF52840 Dongle 切换至 DFU Bootloader 模式(按板子上的 reset 按钮即可),RESET 按钮位于如下图绿色荧光笔处,Reset 灯亮起
打开 Programmer ,选择设备并在左侧 File memory layout 拖入固件文件 sniffer_nrf52840dongle_nrf52840_4.1.1.hex,点击 Write 写入
写入完成后设备名会变为 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,黄色荧光笔标记了必须要拷贝的文件及文件夹
五、管理员权限启动 cmd,切换到 C:\Program Files\Wireshark\extcap
六、输入 Python.exe 的全路径 创建 Python venv 环境
%PYTHONFULLPATH%/Python.exe -m virtualenv env
八、插入 nRF52840 Dongle,执行 nrf_sniffer_ble.bat --extcap-interfaces
显示如下图荧光笔标识部分就可以认为环境搭建成功
九、打开 WireShark 验证抓包,能够成功抓到 Apple 的 BLE 包,如下图
上图显示协议为 APPLEBLE,这是作者编写的 Wireshark 插件,后续会逐渐完善后放出
苹果设备的 BLE 过滤条件为btcommon.eir_ad.entry.company_id == 0x004c
本系列未完待续。