BLEBoy
Objetivo
Crear un periférico BLE compatible con todos los métodos de emparejamiento BLE que puedan utilizarse para formación y pruebas, incluido el emparejamiento fuera de banda (OOB). El periférico debe ser configurable y fácil de recrear con componentes comerciales.
Acerca de
BLEBoy es un periférico BLE implementado con la placa Adafruit nRF52 Feather, que se ha actualizado para admitir todos los métodos de emparejamiento BLE descritos en la especificación Bluetooth (https://www.bluetooth.com/specifications/bluetooth-core-specification). BLEBoy permite actualizar sobre la marcha los parámetros de seguridad GAP (LESC, OOB, MitM, capacidades de E/S, etc.) para que los usuarios puedan experimentar con los distintos métodos de emparejamiento (y el nivel de seguridad que ofrece cada uno). También admite el envío de datos OOB a través del puerto serie para permitir que otras herramientas construyan registros NFC BLE OOB para el emparejamiento OOB.
Esta herramienta se puede utilizar con los módulos de formación que se encuentran en la carpeta "Training" para aprender sobre seguridad BLE.
NOTA Este dispositivo está pensado para utilizarse en formación sobre seguridad BLE. No utilice el código en aplicaciones seguras. En el código se utilizan varios generadores de números aleatorios que no se consideran criptográficamente seguros. Las versiones posteriores del SDK NRF52 Nordic ofrecen API RNG seguras que pueden utilizarse para este fin si es necesario.
Requisitos
Hardware requerido
- nRF52 Feather (https://www.adafruit.com/product/3406)
- OLED Featherwing (https://www.adafruit.com/product/2900)
- Joy Featherwing (https://www.adafruit.com/product/3632)
- Asegúrese de puentear el pin 27 (la almohadilla de la parte inferior de la placa puede soldarse para lograrlo) para poder configurarlo como pin de interrupción. Si se desea otro pin de interrupción, será necesario modificar el código de BLEBoy.
- Feather Tripler (https://www.adafruit.com/product/3417)
- No es estrictamente necesario, pero simplifica la conexión de los componentes
- Cable Micro-USB para la Feather (necesario para subir el código y gestionar el modelo de asociación Passkey Entry del periférico)
- Acceso a un soldador para ensamblar los componentes (soldar los cabezales de pines)
- Un teléfono Android compatible con Bluetooth 4.0 y con las Opciones de desarrollador habilitadas (https://developer.android.com/studio/debug/dev-options.html)
- Esto también puede hacerse con un dispositivo iOS con jailbreak (versión <10) con BTCompanion instalado desde Cydia. Para simplificar, solo cubriremos Android.
Nota: Para gestionar los modelos de asociación de emparejamiento OOB y Passkey Entry (cuando la clave de acceso se introduce en el periférico), será necesario conectar un cable Micro-USB a la nRF52 Feather y escuchar las comunicaciones serie (9600 baudios). Esta misma conexión serie se utiliza para imprimir información de estado y depuración.
Hardware opcional
- Para seguir el ejemplo OOB NFC
- Una batería LIPO para eliminar la necesidad del cable Micro-USB para alimentar la Feather
- Una funda rígida para la solución. El OLED es bastante frágil y puede agrietarse fácilmente con una presión fuerte.
Librerías Arduino requeridas
Todas las librerías pueden instalarse desde sus respectivas fuentes, excepto arduino-menusystem y Bluefruit52Lib, que han sido modificadas. Puede encontrar un registro de cambios de las librerías modificadas en 3rdPartyChanges.txt.
Como alternativa, los usuarios pueden utilizar las librerías contenidas en la carpeta "libraries" de este proyecto para asegurarse de que se utiliza la misma versión de las librerías empleada durante el desarrollo.
Configuración del hardware
Las siguientes son instrucciones de configuración para construir BLEBoy con el hardware requerido enumerado en las secciones anteriores:
- Suelde cabezales de pines macho en cada una de las Feather y Featherwings.
- En la Joy Featherwing, mire la parte inferior de la placa y aplique soldadura en la almohadilla del pin de interrupción opcional (Option Interrupt Pin) situada delante del pin 27.
- Suelde cabezales de pines hembra en el Tripler.
- Conecte las 3 placas Feather al Tripler (se puede usar cualquier orden, pero, para simplificar, puse el OLED arriba, la nRF52 en el medio y la Joy abajo).
Instalación del software
Para programar la nRF52 Feather con el código de BLEBoy, siga estos pasos:
- Instale el IDE de Arduino.
- Instale los recursos de la placa Adafruit nRF52 Feather en el IDE de Arduino (consulte https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup).
- Desarrollado y probado con la versión 0.6.0 de la placa nRF52. Los resultados con otras versiones pueden variar.
- Instale las librerías Arduino de terceros (enumeradas en la sección Librerías Arduino requeridas más arriba).
- Reemplace Adafruit Bluetooth52Lib con la carpeta Bluetooth52Lib de este repositorio.
- Instale la librería arduino-menusystem modificada que se encuentra en la carpeta libraries de este repositorio.
- Cargue BLEBoy en la nRF52 Feather.
- Configure la conexión serie con la nRF52 Feather (9600 baudios).
- (Opcional) Configure la PN532 para el emparejamiento NFC OOB.
Instalación de Arduino con recursos Adafruit nRF52 en Debian
Instalación de Bluefruit52Lib personalizada
- Copie la carpeta Bluefruit52Lib personalizada a ( variará según la instalación):
- 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
Instalación de librerías de terceros
- Instale las librerías de terceros enumeradas en Librerías Arduino requeridas
- Copie arduino-menusystem de la carpeta libraries de BLEBoy a la carpeta de librerías de Arduino de su usuario.
O BIEN
- Copie las carpetas de "libraries" a la carpeta de librerías de Arduino del usuario
- Comúnmente se encuentra en ~/Arduino/libraries o C:\Users\ <user> \Documents\Arduino\libraries