Italian Leggere il traffico Bluetooth

AlpVir

Well-Known Member
Licensed User
Molti anni fa dovevo capire quali messaggi si scambiassero un analizzatore di analisi cliniche ed un computer connessi tramite porte RS232. Ci ero riuscito interponendo sul cavo seriale un altro computer (dotato di 2 porte RS232) su cui era installato uno specifico programma (Docklight). In tal modo ero in grado di vedere i vari ACK, ENQ, ecc. che passavano per il cavo di collegamento.
Adesso vorrei fare la stessa cosa: capire quali messaggi partono ed arrivano ad una e-bike (con motore Bosch e “computerino/display” Kiox) connessa (tramite Bluetooth) ad uno smartphone Android su cui è installata una specifica app (Bosch eBike Connect). L'app in questione è assai deficitaria (mappe scadenti, dati GPS scarsi, ecc.) e vorrei crearne una più adatta ai miei usi.
Da dove partire e con quali strumenti software, conscio che si tratta probabilmente di una impresa assai difficile ?
Penso che dovrei installare, nello stesso smartphone, una app che visualizzi in tempo reale il traffico bluetooth bidirezionale. Sarà possibile far funzionare questa app e, contemporaneamente, l'app eBike Connect citata prima? Avete dei suggerimenti in tal senso ?
Penso anche che il computer, in questa fase di monitoraggio, non c'entri per nulla.
Grazie anticipatamente.
 

Star-Dust

Expert
Licensed User
Si
 

Star-Dust

Expert
Licensed User
Non necessariamente è una semplice trasmissione che si può intercettare/sniffare come faresti in una connessione seriale o anche con un proxy per una connessione tcp e/o udp.

Partiamo dalla base è una trasmissione SPP o BLE?
 

sirjo66

Well-Known Member
Licensed User
uno dei migliori programmi per sniffare è WireShark e so che permette di sniffare anche su bluetooth

Lo installi su di un PC portatile, fai lavorare l'app sul telefono e lui registra tutto
 

Star-Dust

Expert
Licensed User
Non l'ho provato per il Bluetooth
 

AlpVir

Well-Known Member
Licensed User
E' una trasmissione BLE.
Ho installato Wireshark ma non mi sembra che sia adatto a catturare il traffico che avviene fra l'ebike e lo smartphone; a quel che ho capito questo programma rileva il traffico che passa per il computer.
Ho viceversa installato sullo smartphone un'app (Serial Bluetooth Terminal) con cui riesco a connettermi all'ebike, ma poi mi fermo perchè non so come proseguire. Sicuramente lo smartphone invia qualcosa all'ebike ma non so cosa.
E' più difficile di quello che pensassi. :(
 

Star-Dust

Expert
Licensed User
E' una trasmissione BLE.
Ho installato Wireshark ma non mi sembra che sia adatto a catturare il traffico che avviene fra l'ebike e lo smartphone; a quel che ho capito questo programma rileva il traffico che passa per il computer.
Ho viceversa installato sullo smartphone un'app (Serial Bluetooth Terminal) con cui riesco a connettermi all'ebike, ma poi mi fermo perchè non so come proseguire. Sicuramente lo smartphone invia qualcosa all'ebike ma non so cosa.
E' più difficile di quello che pensassi. :(
BLE "lancia" le letture che possono essere catturate dai dispositivi in ascolto. Bisogna però selezionare la classe del dispositivo che si cerca.

Questo è un esempio di un cardio-frequenzimetro (che ha una sua classa di ble)

Devi considerarlo come un Faro che lancia segnali luminosi e chiunque può intercettarli..... Poi tradurre è un altro discorso
Il dispositivo (e-bike) è il server e l'App che si collega (o collegano) sono i client.

Poi c'è da considerare il GATT (che non è l'acerrimo nemico del CAN) questo è un altro discorso da approfondire
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Ho viceversa installato sullo smartphone un'app (Serial Bluetooth Terminal) con cui riesco a connettermi all'ebike, ma poi mi fermo perchè non so come proseguire.

Diciamo che con questo sistema puoi simulare l'app, ma ora dovresti riuscire a fare il contrario, e cioè su di un telefono monti l'app "Serial Bluetooth Terminal" e fai finta che quella sia la e-bike (chiameremo "E" come e-bike), e su di un altro telefonino lanci l'app della e-bike (chiameremo "A" come app).
Metti in comunicazione i due telefoni e lanci l'app su A, e su E dovresti a quel punto vedere cosa viene inviato alla e-bike, facciamo finta che venga inviao il comando CMD1.
A questo punto devi inviare il comando CMD1 alla e-bike per capire cosa risponderà.
Prendi quindi il telefono con il "Serial Bluetooth Terminal", ti colleghi lla e-bike, invii CMD1 e vedi la risposta e te la segni (diciamo che risponde con OK1)
Ora rifai il tutto, e cioè colleghi A con E, vedrai arrivare il comando CMD1, e tu rispondi con OK1.
A quel punto A invierà un secondo comando che quindi vedrai apparire, diciamo CMD2, e vai avanti così finchè non troverai comandi/risposte che ti servono.
Molto difficile ma non impossibile, io l'ho fatto un paio di volte su dei dispositivi RS232.
Sicuro che da qualche parte non esista una documentazione a riguardo ??
 

udg

Expert
Licensed User
Un link interessante (ma non utile per il caso in questione):

Ma questo è per Bluetooth..
E qui c'è un esempio pratico ben dettagliato
 

Star-Dust

Expert
Licensed User

udg

Expert
Licensed User
Leggendo, mi è venuta voglia di procurarmi un device BLE e giocare un po' con quella roba.. :)
 

giannimaione

Well-Known Member
Licensed User
anche leggendo i dati NON sappiamo cosa fa l'app
si può tentare di decompilare l'applicazione "Bosch eBike Connect"
 

AlpVir

Well-Known Member
Licensed User
Mi avete dato una miniera di informazioni !
Per il momento ho trafficato su 2 telefoni entrambi con Bluetooth LE (come certificato dall'app nRTF Connect). Riesco a inviare da uno all'altro (da "E" a "A" e viceversa) una immagine JPG. Entrambi i telefoni mi dicono essere "accoppiati" o "associati" uno all'altro.
Tuttavia, secondo l'app installata su "E" (Serial Bluetooth Terminal), il telefono "E" riconosce fra i devices disponibili il telefono "A" come "Bluetooth classic" mentre in "Bluetooth LE" trovo solo un "-unnamed-" con un indirizzzo Bluetooth sconosciuto (e che che non corrisponde all'indirizzo di "A")
Avviando prima su "E" l'app Serial Bluetooth Terminal e poi su "A" l'app eBikeConnect viene visualizzato il messaggio "Connectin to -unnamed- ..." e poi "Connection failed: gatt status 133". Io pensavo di visualizzare qualcosa tipo "mi sono connesso a Kiox 0008" visto che su eBikeConnect viene visualizzato "Kiox 0008 - ricerca in corso".
In conclusione: "E" non si connette ad "A".
Rispondo a sirjo66 che ringrazio per i precisi suggerimenti che ho cercato di seguire: non credo che esista documentazione o per lo meno io non sono riuscito a trovarla nonostante numerose e fantasiose ricerce.
@giannimaione: sempre più difficile ! Decompilare l'app (di cui ho l'apk, 45 MB) ? Con Android Studio ho visto che c'è un numero sterminato di files e non so proprio dove mettere le mani.
 

sirjo66

Well-Known Member
Licensed User
Sospettavo che non riuscivi a collegarti alla bicicletta, perchè anche io ho un dispositivo particolare e la sua app apposita si collega a questo dispositivo tramite bluetooth ma senza dargli la connessione specifica e senza che si veda da altri dispositivi.
Una specie di dispositivo "nascosto"
Peccato
 

AlpVir

Well-Known Member
Licensed User
Quindi pensi che sia impossibile riuscire in qualcosa (a meno di essere super-abilissimi, cosa che io non sono) ?
Ho letto che la Bosch riconosce se qualcuno modifica/sostituisce il firmware dell'ebike per fargli superare il limite di legge dei 25 Km/h per cui non ci sarebbe da stupirsi se avessero studiato un simile meccanismo diabolico nell'app da loro prodotta.
 
Top