BLEBoy
目标
创建一个支持所有 BLE 配对方式的 BLE 外设,可用于培训和测试,包括带外(OOB)配对。该外设必须是可配置的,并且易于使用消费级零件重新制作。
简介
BLEBoy 是一个使用 Adafruit nRF52 Feather 开发板实现的 BLE 外设,它已更新以支持蓝牙规范(https://www.bluetooth.com/specifications/bluetooth-core-specification)中描述的所有 BLE 配对方式。BLEBoy 允许即时更新 GAP 安全参数(LESC、OOB、MitM、IO 能力等),使用户可以试验各种配对方式(以及每种方式所提供的安全级别)。
它还支持通过串口发送 OOB 数据,以便其他工具构造用于 OOB 配对的 BLE OOB NFC 记录。
该工具可与“Training”文件夹中的培训模块一起使用,以了解 BLE 安全性。
注意:此设备旨在用于 BLE 安全培训。请勿在安全应用中使用代码。代码中使用了多个随机数生成器,这些生成器不被认为是加密安全的。NRF52 Nordic SDK 的更高版本提供了安全的 RNG API,如有需要可用于此目的。
要求
所需硬件
注意:为了处理 OOB 和 Passkey Entry(在外设上输入口令)配对关联模型,需要将 Micro-USB 线缆连接到 nRF52 Feather 并监听串口通信(波特率 9600)。同一串口连接也用于打印状态和调试信息。
可选硬件
- 用于以下 OOB NFC 示例
- 锂聚合物电池,免除使用 Micro-USB 线缆为 Feather 供电的需要
- 解决方案的外壳。OLED 相当脆弱,在尖锐压力下容易破裂。
所需的 Arduino 库
所有库都可以从各自的来源安装,但 arduino-menusystem 和 Bluefruit52Lib 已被修改。已修改库的变更日志可在 3rdPartyChanges.txt 中找到。
或者,用户可以使用本项目“libraries”文件夹中包含的库,以确保使用与开发期间所用版本相同的库。
硬件设置
以下是使用上述各节所列必需硬件构建 BLEBoy 的设置说明:
- 在每个 Feather 和各 Featherwing 上焊接公排针。
- 在 Joy Featherwing 上,查看板底部,并在引脚 27 前面的 Option Interrupt Pin 焊盘上涂上焊锡。
- 在 Tripler 上焊接母排针。
- 将所有 3 个 Feather 板插入 Tripler(任何顺序都可以,但为了简单起见,我将 OLED 放在顶部,nRF52 在中间,Joy 在底部)。
软件安装
要使用 BLEBoy 代码对 nRF52 Feather 进行编程,请按照以下步骤操作:
- 安装 Arduino IDE。
- 在 Arduino IDE 中安装 Adafruit nRF52 Feather 开发板资源(请参阅 https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup)。
- 针对 nRF52 开发板版本 0.6.0 进行开发和测试。其他版本的效果可能有所不同。
- 安装第三方 Arduino 库(见上文“所需的 Arduino 库”部分)。
- 将 Adafruit Bluetooth52Lib 替换为本仓库中的 Bluefruit52Lib 文件夹。
- 安装位于本仓库 libraries 文件夹中的修改版 arduino-menusystem 库。
- 将 BLEBoy 上传到 nRF52 Feather。
- 设置与 nRF52 Feather 的串口连接(波特率 9600)。
- (可选)为 OOB NFC 配对设置 PN532
在 Debian 上安装 Arduino 及 Adafruit nRF52 资源
安装自定义 Bluefruit52Lib
- 将自定义 Bluefruit52Lib 文件夹复制到( 将因安装而异):
- OS X : ~/Library/Arduino15/packages/adafruit/hardware/nrf52/<version>/libraries
- Linux : ~/.arduino15/packages/adafruit/hardware/nrf52/<version>/libraries
- Windows: %APPDATA%\Local\Arduino15\packages\adafruit\hardware\nrf52\ <version> \libraries
安装第三方库
- 安装“所需的 Arduino 库”中列出的第三方库。
- 将 arduino-menusystem 从 BLEBoy libraries 文件夹复制到您的用户 Arduino 库文件夹中。
或者
- 将“libraries”中的文件夹复制到用户 Arduino 库文件夹中。
- 通常位于 ~/Arduino/libraries 或 C:\Users\ <user> \Documents\Arduino\libraries
(可选)通过 NFC 进行 OOB 配对的 PN352 安装