BLEBoy
Obiettivo
Crea un periferico BLE che supporti tutti i metodi di accoppiamento BLE che possono
essere utilizzati per formazione e test, incluso l'accoppiamento out-of-band (OOB).
Il periferico deve essere configurabile e
facile da ricreare utilizzando componenti di consumo.
BLEBoy è un periferico BLE implementato con la scheda Adafruit nRF52 Feather,
che è stata aggiornata per supportare tutti i metodi di accoppiamento BLE
descritti nella specifica Bluetooth (https://www.bluetooth.com/specifications/bluetooth-core-specification). BLEBoy consente di aggiornare al volo i parametri di sicurezza GAP
(LESC, OOB, MitM, capacità IO, ecc.)
per permettere agli utenti di sperimentare con i vari metodi di accoppiamento (e il
livello di sicurezza fornito da ciascuno).
Supporta inoltre l'invio di dati OOB tramite seriale per consentire ad altri strumenti
di costruire record NFC BLE OOB per l'accoppiamento OOB.
Questo strumento può essere utilizzato con i moduli di formazione presenti nella cartella "Training"
per apprendere la sicurezza BLE.
NOTA Questo dispositivo è pensato per essere utilizzato per la formazione sulla sicurezza BLE. Non utilizzare il codice in applicazioni sensibili. Nel codice sono presenti diversi generatori di numeri casuali che non sono considerati crittograficamente sicuri. Le versioni successive dell'NRF52 Nordic SDK forniscono API RNG sicure che possono essere utilizzate a questo scopo, se necessario.
Requisiti
Hardware Richiesto
- nRF52 Feather (https://www.adafruit.com/product/3406)
- OLED Featherwing (https://www.adafruit.com/product/2900)
- Joy Featherwing (https://www.adafruit.com/product/3632)
- Assicurati di collegare (cortocircuitare) il pin 27 (il pad sul fondo della scheda può essere saldato per ottenere questo) così possiamo configurarlo come pin di interrupt. Se si desidera un altro pin di interrupt, il codice BLEBoy dovrà essere modificato.
- Feather Tripler (https://www.adafruit.com/product/3417)
- Non strettamente necessario, ma semplifica il collegamento dei componenti
- Cavo Micro-USB per Feather (necessario per caricare il codice e gestire il modello di associazione Passkey Entry sul periferico)
- Accesso a un saldatore per assemblare i componenti (saldare gli header)
- Un telefono Android che supporti Bluetooth 4.0 e abbia le Opzioni sviluppatore abilitate (https://developer.android.com/studio/debug/dev-options.html)
- Questo può essere fatto anche con un dispositivo iOS jailbroken (versione <10) con BTCompanion installato da Cydia. Per semplicità, tratteremo solo Android.
Nota: per gestire i modelli di associazione OOB e Passkey Entry (dove il passkey viene inserito sul periferico), sarà necessario collegare un cavo Micro-USB alla nRF52 Feather e ascoltare le comunicazioni seriali (baud 9600). Questa stessa connessione seriale viene utilizzata per stampare informazioni di stato e debug.
Hardware Opzionale
- Per seguire l'esempio NFC OOB
- Una batteria LIPO per eliminare la necessità del cavo Micro-USB per alimentare la Feather
- Una custodia rigida per il dispositivo. L'OLED è piuttosto fragile e può rompersi facilmente sotto una pressione decisa.
Librerie Arduino Richieste
Tutte le librerie possono essere installate dalle rispettive fonti, eccetto arduino-menusystem e Bluefruit52Lib, che sono state modificate. Un changelog delle librerie modificate si trova in 3rdPartyChanges.txt.
In alternativa, gli utenti possono utilizzare le librerie contenute nella cartella "libraries" di questo progetto per assicurarsi di usare la stessa versione delle librerie utilizzata durante lo sviluppo.
Configurazione Hardware
Di seguito sono riportate le istruzioni di configurazione per costruire BLEBoy utilizzando l'hardware richiesto elencato nelle sezioni precedenti:
- Saldare gli header maschi su ciascuna delle Feather e Featherwing.
- Sulla Joy Featherwing, guardare il fondo della scheda e applicare saldatura sul pad Option Interrupt Pin davanti al pin 27.
- Saldare gli header femmina sul Tripler.
- Inserire tutte e 3 le schede Feather sul Tripler (l'ordine può essere qualsiasi, ma per semplicità metto la OLED in alto, la nRF52 al centro e la Joy in basso).
Installazione del Software
Per programmare la nRF52 Feather con il codice BLEBoy, seguire questi passaggi:
- Installare l'Arduino IDE.
- Installare le risorse della scheda Adafruit nRF52 Feather nell'Arduino IDE (vedere https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup).
- Sviluppato e testato con la versione 0.6.0 della scheda nRF52. Il successo con altre versioni può variare.
- Installare le librerie Arduino di terze parti (elencate nella sezione Librerie Arduino Richieste qui sopra).
- Sostituire Adafruit Bluetooth52Lib con la cartella Bluetooth52Lib presente in questo repository.
- Installare la libreria arduino-menusystem modificata situata nella cartella libraries di questo repository.
- Caricare BLEBoy sulla nRF52 Feather.
- Configurare la connessione seriale alla nRF52 Feather (9600 baud).
- (Opzionale) Configurare il PN532 per l'accoppiamento OOB NFC
Installare Arduino con le risorse Adafruit nRF52 su Debian
Installare Bluefruit52Lib personalizzata
- Copiare la cartella Bluefruit52Lib personalizzata in (la varierà in base all'installazione):
- 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
Installare le Librerie di Terze Parti
- Installare le librerie di terze parti elencate in Librerie Arduino Richieste
- Copiare arduino-menusystem dalla cartella libraries di BLEBoy nella propria cartella librerie Arduino utente.
OPPURE
- Copiare le cartelle in "libraries" nella cartella librerie Arduino utente
- Solitamente si trova in ~/Arduino/libraries o C:\Users\ <user> \Documents\Arduino\libraries
(OPZIONALE) Installazione per PN352 per l'accoppiamento OOB via NFC