e-rouska

Vyvýjíme bezpečnou kapesní e-rousku, která nepotřeuje mobilní telefon.

e-rouska je mobilní aplikace, která vznikla rámci iniciativy COVID19CZ a je součástí chytré karantény.

https://github.com/covid19cz/erouska-android/wiki/Technical-documentation

Petrova úvaha: „pokud chci pomoct zdarma v projektu o nějakém kontrolovaném pohybu osob, fajn, ale pak nevím proč by jim mé zařízení mělo posílat telefonní číslo, model, výrobce, bluetooth MAC adresu a další OSOBNÍ údaje.“

Pracujeme na open-source platformě, postavené na ESP32 a s použitím Micropython – BLE:

pomocný link:
https://github.com/micropython/micropython/blob/master/extmod/nimble/modbluetooth_nimble.c



technické střípky:
128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID 
???

mam nachytane pakety co vysilaj telefony z eRousky 

>>> b.gattc_write(0, 15, "Hello from micropython\r") GATT procedure initiated: write no rsp; att_handle=15 len=23 

NimBLE discovery ESP32 LE advertising report. len=32 num=1 evtype=0 addrtype=1 addr=47.70.71.e6.14.81 advlen=21 rssi=-63 02 01 1a 11 07 03 00 13  ac 42 02 55 bc ea 11 e4  67 68 dd 40 14      
flags=0x1a     uuids128(complete)=1440dd68-67e4-11ea-bc55-0242ac130003 

takhle to vidi (ten paket) ESP32 NimBLE (kompilovanej z Ccka a DEBUG) 

Advertising Data         
Service Data - 16 bit UUID             
Length: 13             
Type: Service Data - 16 bit UUID (0x16)             
UUID 16: Unknown (0xdd68)             
Service Data: 0474fd463eabd7da1182     
RSSI: -48dBm 

musi se teda prepsat uPy knihovna (zmenit pasivni scan za aktivni) pak zacnou chodit i ty chybejici data 
???


takze jako super, ze MAC se meni, ale staci si z service 0x1800 a descriptoru 0x2a00 precist jmeno a to je stejny, mimo to v service 0x1800 je tech descriptoru asi 5, takze tam budou jeste dalsi zajimave veci 

... 
import bluetooth
erouska_service_uuid = b'\x02\x01\x1a\x11\x07\x03\x00\x13\xacB\x02U\xbc\xea\x11\xe4g\x68\xdd@\x14'
erouska_service_uuid16 = b'\x68\xdd'
ble = bluetooth.BLE()
ble.active(1)  

        >
     GAP procedure initiated: stop advertising.
     MPY: soft reboot
     MicroPython v1.12-360-g16c6c3bca-BLE-activescan on 2020-04-18; ESP32 module with              ESP32
     Type "help()" for more information.
            import bluetooth
       erouska_service_uuid = b'\x02\x01\x1a\x11\x07\x03\x00\x13\xacB\x02U\xbc\xea\x11\xe4g\x68\
       erouska_service_uuid16 = b'\x68\xdd'
       ble = bluetooth.BLE()
       ble.active(1)
       True
       response_data = b'\x0d\x16\x68\xddahojc19\x12\x34\x56'
       ble.gap_advertise(100000, erouska_service_uuid, resp_data=response_data)
       GAP procedure initiated: advertise; disc_mode=2 adv_channel_map=7 own_addr_type=0 adv_filter_policy=0 adv_itvl_min=160 adv_itvl_max=160