Sommario:

Hackera la porta del tuo garage: 5 passaggi
Hackera la porta del tuo garage: 5 passaggi

Video: Hackera la porta del tuo garage: 5 passaggi

Video: Hackera la porta del tuo garage: 5 passaggi
Video: HACKERO TUTTO NELLA MIA CITTÀ con il FLIPPER ZERO: FUNZIONA? 2024, Dicembre
Anonim
Hackera la porta del tuo garage
Hackera la porta del tuo garage
Hackera la porta del tuo garage
Hackera la porta del tuo garage
Hackera la porta del tuo garage
Hackera la porta del tuo garage

Chi non ha mai sognato di tornare a casa solo con un'app del telefono, o di poter ascoltare e ricopiare i tram di dati? Sono felice di poter condividere con voi ciò che ho realizzato e come ho proceduto. Ho iniziato questo progetto dopo la seconda volta che ho dimenticato le chiavi…

Ovviamente la codifica, il tipo di modulazione, la frequenza della portante, le informazioni sulla connessione bluetooth, ei dati che andrò a mostrare nell'esempio non sono gli originali, preferisco non avere visitatori;-).

Questa applicazione si applica a qualsiasi oggetto in grado di ricevere informazioni digitali tramite onde elettromagnetiche (porta del garage, auto, alcune tapparelle…). L'intero sistema è costituito da un oggetto connesso via bluetooth a un telefono, questo oggetto essendo in grado di inviare gli stessi frame del telecomando associato a ciò che vogliamo hackerare. Ho posizionato questo oggetto nel mio garage e posso collegarmi ad esso dall'esterno.

Passaggio 1: attrezzatura

Equipaggiamento
Equipaggiamento
Equipaggiamento
Equipaggiamento

Linguaggi utilizzati: C++, MATLAB, Typescript, C, html.

Conoscenze di base in elettronica digitale e telecomunicazioni/elaborazione del segnale.

Costo: meno di 35 dollari.

Requisiti hardware:

- NooELEC NESDR: per l'acquisizione dei dati. Questo modulo molto economico esegue una demodulazione digitale, da qui la sua elevata portabilità. Questo modello è compatibile con MATLAB. ($ 18,95)

www.nooelec.com/store/sdr/sdr-receivers/nes…

- Wemos Lolin32 lite: questo esp32 è un microcontrollore economico, dotato di Wifi e Bluetooth. Non utilizzeremo il Wifi in questa applicazione, ma questo è ampiamente concepibile. ($ 4,74)

wiki.wemos.cc/products:lolin32:lolin32_lit…

- CDSENET cc1101: questo trasmettitore radio ci offre un'estrema flessibilità, dalla frequenza portante scelta al tipo di modulazione. ($ 2,63)

www.aliexpress.com/item/2PC-Lot-E07-868MS1…

- Fili, collettori, attrezzatura di saldatura, batteria lipo da 3,7 V per l'autonomia, eventualmente oscilloscopio e/o analizzatore logico per il debug e, per inciso, uno smartphone…

Requisiti software:

- MATLAB/Simulink: per l'acquisizione dei dati. È possibile utilizzare altri software alternativi gratuiti, come Audacity per la visualizzazione dei dati. (licenza)

fr.mathworks.com/products.html?s_tid=gn_ps

- toolchain esp-idf: servirà per programmare il file esp32. L'ide Arduino può essere utilizzato anche, ma non consente la stessa libertà di quella che utilizzeremo. (gratuito)

esp-idf.readthedocs.io/en/latest/get-start…

- TI SmartRF Studio: questo ci aiuterà a configurare i registri cc1101, secondo le nostre specifiche. (gratuito)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionico: per costruire l'app. Puoi scegliere di creare app native, ma Ionic ci consente di eseguire la nostra app su dispositivi Android e IOS, con un unico codice. La prestazione non è ricercata nel nostro caso. (gratuito)

ionicframework.com/

- La tua idea preferita…

Passaggio 2: spiare il telecomando

Spiare il telecomando
Spiare il telecomando
Spiare il telecomando
Spiare il telecomando
Spiare il telecomando
Spiare il telecomando

Inizieremo osservando i dati che producono i comandi del telecomando. Per fare ciò, useremo un dongle e un'antenna rtl-sdr:

fr.mathworks.com/hardware-support/rtl-sdr….

Seguendo questo link, troverai il pacchetto MATLAB, oltre a un libro gratuito che spiega tutti i prezzi con la loro spiegazione. Per riassumere ciò che ci riguarda, i dati di transito sono sotto forma di segnale IQ: un dato in fase "I", combinato con un dato in quadratura "Q". Questo metodo facilita le telecomunicazioni. Ci interessa solo ricevere il segnale in fase. Ora raccoglieremo le informazioni fisiche e digitali sul telecomando. Se riesci a trovare della documentazione su di esso, sarà più facile. non ne ho trovati. Per poter osservare temporalmente il segnale, dobbiamo prima sapere qual è la portante di frequenza del segnale emesso. Utilizzeremo l'esempio fornito con la documentazione del pacchetto "Analisi spettrale con radio RTL-SDR", per sapere esattamente a quale frequenza osserviamo un picco di potenza quando inviamo un comando. Nel mio caso è 868,22 MHz. Le frequenze "standard" per questo tipo di applicazioni sono intorno agli 868 MHz.

Con queste indicazioni potremo scrivere un codice MATLAB per recuperare i dati. Questa è allegata in foto e commentata. Il risultato ci permette di individuare il tipo di modulazione: recuperando le informazioni grezze, visualizzando il risultato subito dopo aver recuperato la parte reale del segnale, possiamo dedurre che si tratta di un ASK/OOK modulazione. Osserviamo infatti che la frequenza è invariante, tuttavia il segnale ha solo due ampiezze: una nulla e una fissa. Il resto del codice ci permette di recuperare l'inviluppo del segnale ricevuto, reso più leggibile per conoscere il trame. Una volta visualizzata, possiamo determinare la modulazione in banda base: questa è una codifica Manchester (vedi foto allegata). Possiamo anche dedurre il baud rate (simboli al secondo). Dopo aver raccolto tutte queste informazioni, possiamo conoscere il frame di dati. Nel mio caso, i byte trovati sono: 249, 39, 75, 178, 45, 200 e ripetuti più volte, per garantire che il comando sia ben ricevuto. Fortunatamente, il codice non funziona, il frame di dati è sempre lo stesso.

Passaggio 3: inviare gli stessi frame di dati

Invia gli stessi frame di dati
Invia gli stessi frame di dati
Invia gli stessi frame di dati
Invia gli stessi frame di dati
Invia gli stessi frame di dati
Invia gli stessi frame di dati

Il Texas Instruments cc1101 è così flessibile che raggiungerai comunque il tuo obiettivo, anche se le impostazioni che hai trovato nel passaggio precedente sono completamente diverse dalle mie. Vedrete infatti nella documentazione, pagina 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) che permette di eseguire modulazioni NRZ, Manchester, FSK, ASK/OOK, per raggiungere le frequenze intorno a 433 MHz o 868 MHz e molte altre cose. Ti consiglio di leggere la documentazione per familiarizzare con questo modulo.

A questo link troverai come esempio il lavoro di Loboris riguardante la costruzione di funzioni utilizzando questo modulo:

github.com/loboris/ESP32_CC1101/tree/maste…

Scriveremo il nostro codice per il nostro esp32 con la toolchain esp-idf (vedi i link del primo passaggio). Puoi aggiungere i file del collegamento nella sottodirectory dei componenti del tuo progetto. Per configurare correttamente il nostro cc1101, avremo bisogno di correggere i suoi registri. Texas Instruments ci fornisce un software che ci fornisce il valore dei registri secondo la nostra configurazione: SmartRF Studio.

Per quanto mi riguarda, indico al software che desidero una codifica Manchester, che la mia frequenza portante è 868,22 MHz, che il mio tipo di modulazione è ASK/OOK… Vi lascio inserire i vostri parametri. Nel caso in cui la tua codifica in banda base non sia disponibile, puoi prendere in considerazione la codifica NRZ, aumentando adeguatamente la velocità di trasmissione e adattando i dati.

Una volta definiti i tuoi valori, hai diverse scelte riguardo all'utilizzo del modulo: puoi usare le funzioni che ti ho linkato, oppure quello che ho fatto io, prendi solo ispirazione da questo codice, in modo da configurare il tutto in maniera più modo brutale (vedi foto allegate), e utilizzare solo ciò di cui abbiamo bisogno.

Poiché il chip cc1101 comunica tramite SPI, troverai nel link del codice di esempio il file di intestazione "spi_master_lobo.h", contenente funzioni più semplici per l'utilizzo dell'SPI rispetto a se dovessi utilizzarlo solo con la toolchain. Vi allego in foto lo schema della comunicazione CC1101 in SPI, foto tratta dalla pagina 30 della scheda tecnica CC1101. I quattro fili presentati sono: CS (Chip Select, o SS: Slave Select, o qui CSn), CLK (o SCLK, il Clock, fornito dal master), MISO (o SO, Master In Slave Out), e MOSI (o SI, Master Out Slave In). Nel nostro caso, il master è l'ESP32 e lo slave è il CC1101. Le comunicazioni iniziano quando il pin CS è basso, in generale.

Non dimenticare di abilitare nelle opzioni del compilatore del menuconfig le eccezioni C++ per la compilazione.

Passaggio 4: connettersi al sistema

Connettiti al sistema
Connettiti al sistema
Connettiti al sistema
Connettiti al sistema
Connettiti al sistema
Connettiti al sistema

Se il tuo codice funziona, hai fatto l'essenziale. In questa parte, ci concentreremo su come creare un'app per telefono collegata al sistema. La soluzione più interessante è quella di connettersi tramite bluetooth, perché consente l'utilizzo di un protocollo a basso consumo: Bluetooth Low Energy (BLE). Il profilo gerarchico è mostrato nel disegno allegato: leggeremo e scriveremo il comando in una Caratteristica di un Servizio. E, naturalmente, il nostro esp32 e il nostro smartphone sono dotati di bluetooth.

Questo passaggio è diviso in due parti: la parte esp32 e la parte app. La foto allegata mostra e spiega le parti principali dei codici.

Puoi generare i tuoi UUID seguendo questo link:

www.uuidgenerator.net/

Questi sono gli identificatori che forniranno l'accesso ai servizi e alle funzionalità del nostro profilo BLE.

Per quanto riguarda il codice esp32 BLE, Kolban ha fatto un ottimo lavoro rendendo compatibili tutte queste funzioni C++ di alto livello:

github.com/nkolban/esp32-snippets/tree/mas…

Puoi mettere questi file nella sottodirectory dei componenti. Altrimenti, avrai bisogno di più tempo per capire come usare BLE con la toolchain esp-idf.

In sintesi di ciò che vedrai nel codice, creiamo un Server, un Servizio e una Caratteristica, con gli UUID associati, e aggiungiamo una classe di callback ridefinita, con un metodo associato in scrittura: quando riceviamo la "O" carattere, inviamo un comando di scrittura al cc1101.

Ovviamente, non dimenticare di abilitare il Bluetooth nella configurazione dei componenti di Menuconfig.

Per quanto riguarda la parte app, utilizzeremo il Framework Ionic. Puoi trovare maggiori informazioni al riguardo nel link presentato nel primo passaggio e per maggiori dettagli su come utilizzare BLE con Ionic:

ionicframework.com/docs/native/ble/

Ed esempi, scritti da don:

github.com/don/ionic-ble-examples/tree/mas…

Puoi modificare ad esempio l'esempio "Connetti". Scansioniamo i dispositivi su una prima pagina e raggiungiamo una seconda pagina se selezioniamo il nostro dispositivo. Accediamo quindi a un'interfaccia dove è possibile aggiungere un pulsante con il metodo presentato in foto: invia il nostro comando "O" con gli UUID appropriati. Puoi anche aggiungere nel costruttore della prima pagina il metodo "enable", chiedendo di attivare il bluetooth all'avvio dell'applicazione.

Ti consiglio vivamente di esplorare il sito Web di Ionic e di scoprire tutti i componenti (pulsanti, avvisi, caselle di controllo…) per migliorare la tua applicazione:

ionicframework.com/docs/components/#overvi…

Passaggio 5: ottimizzare il consumo energetico

Ottimizza il consumo energetico
Ottimizza il consumo energetico
Ottimizza il consumo energetico
Ottimizza il consumo energetico

Abbiamo iniziato a lavorare sul basso consumo, quindi lavoriamo.

La toolchain esp-idf ci permette di utilizzare una GUI di configurazione, la menuconfig: molti parametri possono abbassare il consumo di esp32. Prima di tutto, poiché non abbiamo bisogno del Wifi, possiamo disabilitarlo nella configurazione del componente. Nella stessa cartella, in FreeRTOS, puoi selezionare "Esegui FreeRTOS solo sul primo core. Quindi, in specifico per ESP, puoi abbassare la frequenza della CPU a 80 MHz. Tutte le funzionalità funzionano ancora a questa velocità di clock. Infine, puoi seleziona "Abilita il coprocessore Ultra Low Power (ULP). Questa configurazione fa passare il consumo di corrente da circa un centinaio di mA a circa trenta mA. Questo è ancora troppo…

ESP32 può gestire il sonno profondo. Solo il nucleo a bassa energia è acceso e attende un risveglio.

Vedi questo link qui sotto per maggiori dettagli:

esp-idf.readthedocs.io/en/latest/api-refere…

Sfortunatamente, nell'ultima versione disponibile della toolchain esp-idf (3.0), gli unici risvegli disponibili sono per timer e interruzioni GPIO. Fortunatamente, Espressif ci promette che BLE si sveglierà nella prossima versione (3.1).

È inoltre possibile mettere il CC1101 in modalità di sospensione, inviando in SPI il comando appropriato per spegnere il dispositivo (vedere la scheda tecnica di cc1101, il comando SPWD, pagina 51). Per mettere il dispositivo in modalità di sospensione o per riattivarlo, puoi mettere in basso e poi in alto il pin Chip Select dei pin SPI (maggiori informazioni nella scheda tecnica).

Queste ultime configurazioni dovrebbero riuscire a far passare i consumi dell'impianto sotto i milli-ampere…

Infine, per far durare il sistema il più a lungo possibile senza ricaricarsi, o addirittura raggiungere un mese di autonomia, scegli la batteria da 3,7V con più milli-ampere all'ora. Misurando il consumo energetico del tuo impianto, con il display di un generatore o di un amperometro collegato in serie prima del tuo polo + del tuo impianto, puoi stimare la durata del tuo impianto!

Consigliato: