V praxi se zpravidla jedná o síť nízkoenergetických Bluetooth (BLE 4.0) vysílačů, tzv. beaconů či spotů, majáků.
Ty předávají mobilním zařízením identifikační informace – UUID, Major a Minor ID a sílu signálu – odsud ta proximity. Aplikace tyto informace dále zpracovávají.
Podrobnější popis a příklad použití např. zde : Technologie iBeacon a její využití pro lokalizaci a komunikaci mezi mobilními zařízeními
Samotný iBeacon je malá DPS, na které je Bluetooth vysílač a nějaký ten řídící MCU v jednom – nRF5xxx od Nordicu apod.. Napájeno jednou CR2032 baterii. Na Alixu stojí pád USD.
Případně lze iBeacon emulovat pomocí MCU, které mají podporu Bluetooth – např. ESP32 (Build a ESP32 based Bluetooth iBeacon) – se všemi negativy (spotřeba) i pozitivy (programovatelnoust, bezpečnost)
Pro pokusy a možné další využití jsem kdysi koupil (ještě za levno) iBeacon s čipem nRF51822, který má jako jeden z GATT profilů terminál pro sériovou linku.
A jelikož k dodávanému modulu není žádná dokumentace, takže nastoupilo hackování – nRF Connect, BLE Scanner, pak připojit k terminálu (přes mobil, odkazy na appky níže) a metoda pokus/omyl.
Terminál slouží mimo jiné i pro nastavení základních parametrů beaconu – název, UUID, Major a Minor číslo
Shrnutí
Zobrazení nastavených hodnot a konfigurace se provádí pomocí několika příkazů o délce 1 Byte + parametry, zaslaných v HEX, bez ukončení (CR, LF). Vše nutno nastavit v terminálu.
Seznam doposud zjištěných příkazů vč. příkladů :
Command: 0x11 - Set Name
Example: 0x11 0x54 0x45 0x53 0x54 //TEST
Response: 0x11
Example: 0x11 // Delete Name
Response: 0x11
-------------------------------------------------
Command: 0x12 - Set UUID
Example: 0x12 0xFD 0xA5 0x06 0x93 0xA4 0xE2 0x4F 0xB1 0xAF 0xCF 0xC6 0xEB 0x07 0x64 0x78 0x25
Response: 0x13 0xFD 0xA5 0x06 0x93 0xA4 0xE2 0x4F 0xB1 0xAF 0xCF 0xC6 0xEB 0x07 0x64 0x78 0x25
-------------------------------------------------
Command: 0x13 - Get UUID
Example: 0x13
Response: 0x13 0xFD 0xA5 0x06 0x93 0xA4 0xE2 0x4F 0xB1 0xAF 0xCF 0xC6 0xEB 0x07 0x64 0x78 0x25
-------------------------------------------------
Command: 0x14 - Set Major/Minor
Example: 0x14 0x00 0x01 0x00 0xFF 0xB0 // Major = 1, Minor = 255 , 0xB0 - ???
Response: 0x15 0x00 0x01 0x00 0xFF 0xB0
-------------------------------------------------
Command: 0x15 - Get Major/Minor
Example: 0x15
Response: 0x15 0x00 0x01 0x00 0xFF 0xB0 // Major = 1, Minor = 255
Jelikož komunikace bluetooth beacon-zařízení, ani samotný GATT profil nejsou defaultně zabezpečeny/chráněny proti neoprávněnému přístupu/připojení, tak asi bude hodně zajímavé projít se po různých OC, kancelářských budovách a zkusit oskenovat okolí.
A potom … WhiteHat upozornit, BlackHat změnit hodnoty … nikoho nenavádím, jen uvažuju nahlas.
Odkazy, zdroje