|
Radiocomandi Apricancello |
||
|
Data |
by "Kaiser" |
|
|
22/Luglio/2005 |
Published by Quequero |
|
|
Apriti Sesamo! (è proprio il caso di dirlo no? :P) |
Grazie tante Kaiser, interessantissimo tute, specie dopo i dibattiti sul forum! |
|
|
.... |
|
.... |
|
Difficoltà |
(X)NewBies ( )Intermedio ( )Avanzato ( )Master |
|
|
Introduzione |
Lo scopo del tutorial è di fornire a chi è interessato all'argomento e magari non ha la più pallida idea di come funzioni un radiocomando, un punto di partenza per realizzare da solo qualcosa di utile e di interessante, infatti se tutto va bene, questo minitutorial introduttivo sarà seguito da altri tute dove fornirò gli elementi per realizzare qualcosa di pratico senza pretendere di spiegare teorie complicate sulla radiofrequenza. Ma soprattutto intendo mostrare quanto sia semplice eludere alcuni sistemi che purtroppo ripeto vengono ancora utilizzati da ignari utenti quando ne esistono di altri assolutamente più sicuri e dal costo non troppo superiore ai precedenti.
|
Tools usati |
Una minima conoscenza elettronica del tipo che se vi dico transistor non caschiate dalle nuvole.
|
URL o FTP del programma |
|
Essay |
Contengono un chip collegato ad una serie di microinterruttori, il chip viene attivato dalla pressione di un pulsante e legge lo stato degli interruttori; attraverso una logica interna il chip spara fuori una sequenza binaria che pilota la base di un transistor il quale collegato ad un circuito L-C forma un oscillatore modulato On-Off (cioè quando alla base arriva uno 0 il tx è spento, quando arriva un 1 il transistor oscilla alla frequenza tarata col circuito risonante L-C generando così la portante trasmessa dall'antenna che è la induttanza L stessa). Se aprite un radiocomando apricancello vecchio stile noterete: un numero variabile di microinterruttori che vi darà già alcune informazioni sul tipo di codifica, un chip encoder dal quale potete risalire (se la sigla è leggibile e non si tratta di dispositivi programmati) alla codifica, una induttanza/antenna disegnata sul circuito stampato, un transistor e un compensatore che è un condensatore la cui capacità è regolabile tramite una piccola vite. Questa configurazione non è più consentita dalle normative a causa delle fluttuazioni della frequenza generata dall'oscillatore dovute alla deriva delle caretteristiche dei componenti al variare della temperatura e per l'invecchiamento; inoltre la grossa mole di frequenze spurie emesse possono generare interferenze. E' evidente che se un malintenzionato volesse intromettersi nel nostro sistema dovrebbe costruirsi un telecomando identico al nostro; identico significa che la frequenza portante generata dall'oscillatore deve coincidere o perlomeno andarci molto vicino e che deve coincidere anche la sequenza binaria sia dal punto di vista binario appunto, che dal punto di vista temporale. Non basta quindi cambiare gli interruttori per usare un radiocomando con un cancello diverso dal suo perchè potrebbe avere una frequenza completamente diversa oppure il decoder potrebbe avere un clock differente. Perchè i segnali di informazione vengono modulati? Perchè non si inviano così come sono? Per varie ragioni: l'informazione solitamente ha frequenza tale che richiederebbe antenne chilometriche per essere trasmessa, trasportando un segnale su un'altro segnale con frequenza molto più alta consente di usare antenne più piccole inoltre permette di far viaggiare molti segnali in un unico mezzo trasmissivo senza che essi interferiscano tra loro e nel nostro caso permette anche di creare un meccanismo di sicurezza (esistono trasmettitori che implementano continui salti di frequenza in modo tale da non poter essere ricevuti per intero da malintenzionati). La portante e il tipo di modulazioni dipendono dal tipo di segnale che si vuole trasmettere e dal tipo di mezzo trasmissivo.
Affrontiamo il primo problema: di frequenze possibili ne esistono un'infinità, è quindi da scartare l'idea di mettersi con un generatore rf e provare a generare tutte le combinazioni di codice per ogni frequenza possibile mentre sembra fattibile appostarsi con un ricevitore e cercare di captare il segnale, con un po' di fatica e gli strumenti giusti si potrebbe fare. Ma c'è un "però", le normative stabiliscono, per i motivi prima esposti, delle frequenze apposite per questi radiocomandi quindi se un radiocomando non opera in queste frequenze allora non è omologato e per questo motivo da qualche hanno tutti hanno cercato di adeguarsi con nuovi prodotti; la più famosa e strausata è la famigerata 433,92 MegaHertz. Supponiamo dunque che il malintenzionato decida di operare su tale frequenza; rimane da decidere se usare la forza bruta oppure dilettarsi in un + elegante sniffing; per sapere quale può essere il tipo di attacco più probabile andiamo a vedere in dettaglio i sistemi di codifica utilizzati dai chip dei radiocomandi.
SISTEMI A CODICE FISSO
Prima abbiamo parlato di microinterruttori che determinano il codice del telecomando, ma in che modo il chip genera la sequenza binaria da trasmettere? Ebbene ci sono 2 tipi essenziali di codifiche, National e Motorola (dalle case produttrici dei rispettivi chip).
Codifica Motorola
L'encoder è il chip siglato MC145026 mentre MC145027 e MC145028 sono i decoder. Non sto a spiegarvi dettagliatamente il loro funzionamento che potete approfondire scaricandovi il datasheet relativo, ad ogni modo ecco come funzionano questi chip: l'encoder è collegato ad un massimo di 9 microinterruttori a tre stati (possono essere collegati a massa, all'alimentazione oppure lasciati volanti); quando il chip viene abilitato rileva lo stato degli interruttori e produce la codifica seriale che continua fin tanto che il chip rimane abilitato. Se un interruttore è collegato a massa il chip lo traduce in 2 brevi impulsi sull'uscita, se è collegato all'alimentazione in 2 impulsi di durata più lunga mentre se è lasciato aperto in un impulso lungo seguito da uno breve. Questa modulazione è una sorta di PWM (Pulse Width Modulation) e viene ripetuta per tutti e 9 i bit. Il primo decoder menzionato riceve il treno di impulsi e li traduce interpretando i primi 5 impulsi come codice a tre stati ed i restanti 4 come codice binario (quindi gli ultimi 4 interruttori del tx non possono essere volanti!) e se riceve ALMENO 2 sequenze valide (ovvero che combaciano con quelle dei propri interruttori) allora si attiva. Il suo fratellino funziona nello stesso modo con l'unica differenza che tratta il segnale ricevuto come un codice ternario a 9 cifre il quale ci offre la bellezza di 3^9 = 19683 combinazioni. Non lasciatevi ingannare dalle apparenze!!! Sembrano pochissime di fronte alla potenza di un elaboratore ma se pensate che si deve ripetere ogni codice almeno una volta e se ogni codice durasse 100ms, si impiegherebbero 19683*2*0,1 = 3936,6 secondi = 65,61 minuti. Ma c'è un problema grosso: esattamente quanto dura la trasmissione di un codice? La risposta è: dipende dal clock che dipende dalla rete R-C impiegata nel telecomando e siccome il costruttore può scegliere i valori di R e di C in una gamma molto ampia, il malintenzionato dovrebbe azzeccare con una certa precisione (non trascurabile) la frequenza del clock altrimenti i chip non sono allineati e la ricezione non avviene correttamente. Ricapitolando dovremmo trasmettere 39366 sequenze per le quali potrebbe volerci 1 ora, il tutto ripeterlo per ogni possibile frequenza del treno di impulsi; beh non so a voi ma a me passerebbe la voglia di provarci :) Resta però fattibile e quindi molto pericoloso per la sicurezza l'intercettazione e decodifica di una trasmissione mediante scheda a microprocessore accoppiata ad un ricevitore radio.
Codifica National
Il chip in questione è l'onnipresente MM53200 che ogni tanto si presenta con nomi diversi ma è sempre lui il birichino; fa sia da encoder che da decoder e tra poco lo troverete pure nell'ovetto Kinder :P Vediamo come opera questo integrato: possiede dodici ingressi che possono essere portati a massa o lasciati liberi tramite i soliti interruttori; genera quindi un codice binario il cui clock è sempre determinato da una rete R-C esterna e che deve essere ricevuto per ALMENO ben 4 VOLTE per attivare l'rx. Avendo a disposizione 12 linee si possono generare 2^12=4096 combinazioni diverse. Andiamo ora a vedere in dettaglio il protocollo supponendo che il clock sia di 100kHz:
tramite dei timers interni, il chip genera il proprio segnale; se un interruttore è a massa l'uscita andrà bassa per 0,32 ms e subito dopo alta per 0,64 ms mentre se l'interruttore è flottante l'uscita andrà bassa per 0,64 ms e subito dopo alta per 0,32 ms. Questo per tutti e 12 i bit iniziando dal B1 e finendo col B12. Un bit occupa quindi 0,96 ms di spazio temporale mentre una word occupa 11,52 ms. Tra una word e l'altra viene inserita una pausa di 11,52 ms che comprende anche un impulso alto di sincronismo della durata di 0,32 ms quindi per trasmettere le 4 word necessarie all'attivazione dell'rx si impiegano 92,16 ms che moltiplicate per il numero di combinazioni fa circa 377 secondi = 6,29 minuti. Ne consegue che aumenta la possibilità di effettuare un brute con successo, dopotutto si può fare qualche tentativo con delle frequenze di clock standard tanto una prova dura circa 7 minuti e in un'ora riesco a farne un po'; resta però che lo sniffing del codice se prima era fattibile adesso diventa un gioco da ragazzi e la cosa non è molto piacevole.
Per i motivi sopra esposti si è pensato di realizzare sistemi a codice dinamico in modo da rendere completamente inutile l'intercettazione del codice da parte di malintenzionati visto che ad ogni ricezione viene ricalcolato un nuovo codice e quelli vecchi non funzionano più.
SISTEMI A CODICE DINAMICO
Per darvi un'idea di cosa voglia dire "dinamico" vi parlo di un sistema piuttosto vecchio chiamato Dynacoder appunto. Esso risale addirittura al 1995 se non sbaglio quindi pensate un po' quanto tempo e passato è la diffusione di questi apparecchi sta iniziando solo ora e solo dove si richiede un'elevata sicurezza. Comunque questo dispositivo si basa sul PIC16C54 e funziona in questo modo: il codice inviato è composto da 65 bit dei quali 24 costituiscono la parte fissa che dipende dal trasmettitore in uso, 32 bit variano invece ad ogni nuova trasmissione come pure i restanti 8. I 24 bit fissi identificano il trasmettitore percui si possono produrre 16.777.216 tx differenti e scordatevi di avere il codice uguale a quello del vicino :) Ma se per qualche arcano motivo questo dovesse accadere niente paura perchè arrivano gli altri 32 bit con oltre 4 miliardi di combinazioni. La combinazione trasmessa varia ogni volta calcolata tramite un algo programmato nel pic e in media si ripete una volta ogni milione di trasmissioni ne viene che la probabilità di avere due radiocomandi con uguale codice fisso vicini che trasmettono la stessa sequenza è 1 su 340.000 miliardi! E i restanti 8 bit? Cosa succederebbe se il vostro fratellino dispettoso si mettesse a pigiare il pulsante per 100 volte lontano dal ricevitore? Nulla visto che il sistema tollera un disallineamento massimo tra tx e rx di 256 trasmissioni e gli 8 bit contengono informazioni di sincronismo per mantenere allineati i chip. Grazie ad una eeprom seriale è possibile gestire più di un radiocomando memorizzandovi i relativi codici. Penso abbiate capito la differenza tra un apricancello affidabile e sicuro e uno che lascia il tempo che trova quindi occhio a quello che avete a casa.
Dopo questo palloso discorso teorico/introduttivo ho finito, per adesso, ma se il Que vorrà tornerò con diverse prelibatezze.
|
Note finali |
Ringrazio tutti quelli che hanno lavorato e lavorano per la UIC, tutto il gruppo ormai sciolto da tempo dei RingZ3r0 grazie ai quali ho scoperto un nuovo fantastico mondo.
|
Disclaimer |
Le informazioni contenute in questo tutorial sono a scopo informativo e non intese ad invogliare persone a compiere atti inleciti quali bypassare sistemi di sicurezza e accesso pertanto non siamo responsabili se usate tali informazioni per violare la proprietà privata altrui. Vogliamo solamente informare la gente dei possibili rischi che derivano dall'uso di sistemi poco sicuri allo scopo di migliorarli.