PCF7931 Guida Completa Allo Sniffing

23
©Copyright 2005 -Tutti i diritti sono riservati. 1 PCF7931: Guida completa allo sniffing. Autore: TheInsider Revisione: 1.0.4 Questa approfondita guida è rivolta a tutti coloro che sono affascinati dalla tecnologia RFID (Radio Frequency Identification) ma che non hanno competenze specifiche in materia. Per quanto mi sarà possibile cercherò di utilizzare un linguaggio facilmente accessibile a chiunque, mi perdoneranno i lettori più esperti se indugierò a volte nel chiarire nozioni triviali e per molti scontate. Questa guida mira ad individuare un modo per captare un segnale elettromagnetico prodotto da una sorgente (uno scrittore RFID) e diretto ad un ricevitore nelle vicinanze (un transponder RFID). Per quale motivo dovremmo voler captare questa comunicazione scrittore/transponder? La risposta è semplice: per capirne il funzionamento e verificarne i limiti in termini di distanza di lettura e di sicurezza intrinseca del sistema. Investireste in un sistema di comunicazione RFID che non offre adeguate garanzie in termini di protezione dei dati trasmessi e che risulti facilmente violabile da un qualunque ragazzino curioso? Probabilmente no, ed è per questo motivo che è necessario vi facciate un’idea precisa dei limiti di tali sistemi di comunicazione per poter scegliere quello che meglio si adatta alle vostre esigenze in termini di costo, affidabilità e sicurezza. Dopo questa necessaria premessa possiamo entrare nel vivo del problema posto: è così semplice intercettare una comunicazione tra uno scrittore RFID ed un transponder? La risposta è sì, è abbastanza semplice se si conoscono le basi della tecnologia RFID e questo capitolo intende fornire non solo le basi teoriche ma anche elementi pratici di immediata applicazione. Quando uno scrittore RFID (detto “writer”) invia un messaggio ad un transponder RFID (detto “tag”) lo fa emettendo un campo magnetico variabile nel tempo e sfruttando un fenomeno detto di induzione elettromagnetica, lo stesso fenomeno che si sfrutta nei comuni trasformatori. Grazie a questo fenomeno, ai capi della bobina del tag (un avvolgimento di filo di rame smaltato che si trova all’interno del tag), si genera una tensione di ampiezza proporzionale all’intensità del campo magnetico prodotto dal writer. In parole povere se ad un certo istante il campo magnetico prodotto dal writer vale 10 allora la tensione ai capi del tag varrà 10, se il campo magnetico si annulla allora anche la tensione sul tag si annulla. Se un istante dopo il campo magnetico diventa 5, anche la tensione sul tag diventa 5 (possiamo ignorare per ora le unità di misura). Grazie a questa magica induzione elettromagnetica allora diventa facile inventarsi un sistema per inviare dati ad un tag, basta stabilire che la presenza di un campo magnetico variabile corrisponde ad un 1 logico e la sua assenza corrisponde ad uno 0 logico.

description

Guida Completa Allo Sniffing delle chiavette PCF7931

Transcript of PCF7931 Guida Completa Allo Sniffing

Page 1: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 1

PCF7931: Guida completa allo sniffing.Autore: TheInsiderRevisione: 1.0.4

Questa approfondita guida è rivolta a tutti coloro che sono affascinati dallatecnologia RFID (Radio Frequency Identification) ma che non hannocompetenze specifiche in materia. Per quanto mi sarà possibile cercherò di utilizzare un linguaggio facilmenteaccessibile a chiunque, mi perdoneranno i lettori più esperti se indugierò avolte nel chiarire nozioni triviali e per molti scontate. Questa guida mira ad individuare un modo per captare un segnaleelettromagnetico prodotto da una sorgente (uno scrittore RFID) e diretto ad unricevitore nelle vicinanze (un transponder RFID). Per quale motivo dovremmo voler captare questa comunicazionescrittore/transponder? La risposta è semplice: per capirne il funzionamento everificarne i limiti in termini di distanza di lettura e di sicurezza intrinseca delsistema. Investireste in un sistema di comunicazione RFID che non offre adeguategaranzie in termini di protezione dei dati trasmessi e che risulti facilmenteviolabile da un qualunque ragazzino curioso? Probabilmente no, ed è perquesto motivo che è necessario vi facciate un’idea precisa dei limiti di talisistemi di comunicazione per poter scegliere quello che meglio si adatta allevostre esigenze in termini di costo, affidabilità e sicurezza.

Dopo questa necessaria premessa possiamo entrare nel vivo del problemaposto: è così semplice intercettare una comunicazione tra uno scrittore RFIDed un transponder? La risposta è sì, è abbastanza semplice se si conoscono lebasi della tecnologia RFID e questo capitolo intende fornire non solo le basiteoriche ma anche elementi pratici di immediata applicazione. Quando uno scrittore RFID (detto “writer”) invia un messaggio ad untransponder RFID (detto “tag”) lo fa emettendo un campo magnetico variabilenel tempo e sfruttando un fenomeno detto di induzione elettromagnetica, lostesso fenomeno che si sfrutta nei comuni trasformatori. Grazie a questofenomeno, ai capi della bobina del tag (un avvolgimento di filo di ramesmaltato che si trova all’interno del tag), si genera una tensione di ampiezzaproporzionale all’intensità del campo magnetico prodotto dal writer. In parole povere se ad un certo istante il campo magnetico prodotto dalwriter vale 10 allora la tensione ai capi del tag varrà 10, se il campo magneticosi annulla allora anche la tensione sul tag si annulla. Se un istante dopo ilcampo magnetico diventa 5, anche la tensione sul tag diventa 5 (possiamoignorare per ora le unità di misura).

Grazie a questa magica induzione elettromagnetica allora diventa facileinventarsi un sistema per inviare dati ad un tag, basta stabilire che la presenzadi un campo magnetico variabile corrisponde ad un 1 logico e la sua assenzacorrisponde ad uno 0 logico.

Page 2: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 2

Questo è intuitivo da capire se il tag è alimentato a batteria (tag cosiddetto“attivo”), ma come è possibile fare in modo che il tag riesca ad autoalimentarela circuiteria interna (microcontrollore, eeprom, controllo d’accesso) sfruttandoil campo magnetico emesso dal writer? Questa è la vera meraviglia suscitata dai tag cosiddetti “passivi” come il bennoto transponder PHILIPS PCF7931, costituito da un minuscolo contenitore inplastica nera di 12x6mm senza alcun contatto e senza alcuna fonte dialimentazione esterna. Come è possibile? E’ presto detto. La tensione che si presenta ai capi dellabobina del tag quando il writer emette un campo magnetico variabile neltempo è capace di generare una corrente piccola, dell’ordine dei uA(microAmpere), ma già sufficiente ad alimentare il microchip contenuto nel tage a permetterne il funzionamento. L’obiezione che può essere posta allora è la seguente: se il writer trasmetteun 1 logico tutto fila liscio perchè il campo magnetico variabile è presente edunque il tag si può autoalimentare, ma quando il writer trasmette uno 0logico (campo magnetico nullo) il tag perde completamente la sua fonte dinutrimento energetico, come fa ad autoalimentarsi e a registrarecorrettamente il dato??? L’obiezione è corretta ma la soluzione è semplice: il tag contiene uncondensatore che si carica durante la fase attiva del campo magnetico e chefunge da riserva energetica nei momenti di assenza di campo magnetico,permettendogli di sopravvivere. Ovviamente questa riserva energetica èlimitata dalle microscopiche dimensioni del condensatore presente nel tag econsente di spegnere il campo magnetico solo per poche decine dimicrosecondi, pena lo spegnimento del tag. Dunque per poter mantenere costantemente vivo e ricettivo il tag ènecessario che il writer utilizzi un sistema di codifica dei dati tale da mantenereattivo il campo magnetico variabile per la stragrande maggioranza del tempo,limitandosi ad interromperlo solo per brevissimi istanti, detti impulsi ditrasmissione. Finora ho parlato di un generico campo magnetico variabile come condizioneessenziale per poter generare una tensione ai capi della bobina del tag, maesattamente, che aspetto ha questo campo magnetico? E’ presto detto: sipresenta come un’onda sinusoidale detta “portante” di frequenza standardprestabilita: esattamente 125KHz nel caso del transponder PCF7931.

In Figura 1 è possibile vedere come si presenta il segnale sulla bobina deltransponder PCF7931 che riceve i dati dal writer (segnale ASK). Per generaretale segnale il writer usa un segnale digitale di controllo (modulante) perspegnere/accendere un signale sinusoidale a 125KHz (portante) generatointernamente. Il breve istante in cui la portante è assente costituisce l’impulsodi programmazione che il transponder deve interpretare. Siccome la portantesi accende e si spegne completamente si parla di modulazione OOK-ASK (OnOff Keying – Amplitude Shift Keying). Se invece di spegnere completamente laportante se ne dimezzasse l’ampiezza si parlerebbe di modulazione ASK al50%, se si riducesse l’ampiezza solo del 10% si parlerebbe di modulazione ASK

Page 3: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 3

al 10% e così via. La modulazione OOK-ASK non è altro che una modulazioneASK al 100%.

Figura 1. Modulazione OOK-ASK di una portante a 125KHz.

E’ interessante notare come il transponder PCF7931 usi due differenti tipi dimodulazione ASK a seconda della direzione della comunicazione: perprogrammare il tag occorre modulare al 100% (OOK-ASK) la portante, perricevere i dati dal tag occorre demodulare un segnale ASK modulato al 10%.La comunicazione inoltre è sempre half-duplex, ossia non è possibiletrasmettere e ricevere contemporaneamente, il tag o trasmette o riceve, perusare una metafora automobilistica basti pensare ad un senso unico alternato.

A questo punto dovrebbe essere sufficientemente chiaro come il writer riescaad alimentare il PCF7931 e contemporaneamente inviargli impulsi dicomunicazione, ciò che non ho ancora spiegato è come faccia il transponder acapire se il brevissimo impulso (assenza di campo magnetico) che gli è appenaarrivato sia un 1 oppure uno 0 logico. La risposta a questo quesito è nascostain una sigla: “PPM” ossia Pulse Position Modulation. Il PCF7931 adotta propriotale codifica che consiste nel mantenere acceso il campo magnetico per lamaggiorparte del tempo, spegnendolo solo per brevissimi istanti la cuiposizione temporale relativa codifica il bit desiderato. In altri termini è il tempo trascorso dal penultimo impulso che ci è arrivatoche ci fa capire se devo interpretare l’ultimo impulso come uno 0 od un 1logico. Dunque nella codifica PPM il contenuto informativo è nascosto nelladurata degli intervalli tra un impulso ed il successivo, dove per impulso siintenda un fugace spegnimento del campo magnetico.

Page 4: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 4

Provo ad esemplificare il concetto. Supponiamo di stabilire la seguente regoladi codifica PPM: se è trascorso 1ms (millisecondo) dal penultimo impulso alloral’ultimo impulso è uno 0 logico; se sono trascorsi 2ms dal penultimo impulsoallora l’ultimo impulso è un 1 logico. Adesso supponiamo di essere riusciti a registrare la seguente sequenzatemporale di impulsi inviati dal writer al transponder:

…Primo impulso (cioè portante assente);Pausa di 2ms (cioè portante presente);Secondo impulso;Pausa di 1ms;Terzo impulso;Pausa di 2ms;Quarto impulso;Pausa di 2ms;Quinto impulso;…

Domanda: sulla base della codifica PPM che abbiamo adottato, qual è lasequenza di bit ricevuti dal tag?Risposta: il quinto impulso vale 1 perché lo separano 2ms dal precedente, ilquarto impulso vale 1 perché lo separano 2ms dal precedente, il terzo impulsovale 0, il secondo vale 1 ed il primo impulso allora ??? Quello non fa testo, èsolo un bit di start, un modo per avvertire il tag che stanno arrivando gliimpulsi di programmazione.Dunque la sequenza di bit inviati dal writer al tag vale “1011”, facile no?

In realtà la codifica PPM adottata dal tag PCF7931 è leggermente piùcomplessa in quanto si possono discriminare 3 diversi possibili intervalli tra unimpulso e il successivo. Studiando la sequenza di tali intervalli è abbastanzasemplice interpretare il valore dei bit che rappresentano. Non mi addentrerò in questa guida nei dettagli della codifica PPM adottata dalPCF7931 per non allontanarci troppo dal topic del capitolo e non appesantire,chi vuole farlo può consultare direttamente il datasheet.

A questo punto ho introdotto abbastanza nozioni per intuire che per captare ilsegnale emesso dal writer in fase di scrittura del transponder non dobbiamofare altro che realizzare nientepopodimenochè… un transponder! O meglio,possiamo semplicemente copiare lo stadio di ricezione del PCF7931 senzapreoccuparci della sua alimentazione, che può essere fornita esternamentetramite una pila da 9V oppure tramite una tensione fornita per esempio da unnotebook.

Page 5: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 5

Probabilmente qualcuno preso dall’entusiasmo starà pensando di captare ilsegnale di programmazione del writer usando qualcosa di simile ad unaradiolina sintonizzata sui 125KHz, comodamente spaparanzato a 10metri didistanza dal writer. In fondo si tratta pur sempre di onde elettromagneticheno? Purtroppo la magia dell’induzione elettromagnetica ha un grosso limite,che riduce fortemente le distanze utili a poter ricevere un segnaleapprezzabile. Questo limite è dato dal fatto che il campo magnetico generatodal writer riduce la propria intensità con il cubo della distanza, divenendoinapprezzabile già a distanza di pochi centimetri se non addirittura millimetri! Per questo motivo si parla di “effetto di prossimità”, non c’è contatto trawriter e transponder ma la distanza deve essere molto breve, penal’incomunicabilità. Per capire meglio quanto velocemente il campo magnetico si riduca conl’aumentare della distanza, immaginiamo di porre il tag a 1cm di distanza dallabobina del writer e supponiamo di leggere una tensione di 8Vpp ai capi dellabobina del tag (per chi è a digiuno di elettronica per Vpp si intende la tensionemisurata tra il massimo picco positivo e il massimo picco negativo del segnalein esame). Bene, se ora allontaniamo il tag portando la distanza dal writer a 2cm, latensione captata dal tag si ridurrà di ben 8 volte portandosi ad appena 1Vpp,troppo poco per riuscire ad autoalimentare il microchip interno. Se invece dimezziamo la distanza portandola a 0.5cm, la tensione captatadiverrà circa 8 volte più grande, ben 64Vpp !!!

Dunque occorre avvicinarci il più possibile alla bobina del writer per poteravere qualche chance di captare un segnale apprezzabile. Inoltre uno snifferche si rispetti deve essere discreto e non disturbare la comunicazione tra ilwriter e il transponder, deve avvicinarsi in punta di piedi e mettersi insilenzioso ascolto senza alterare il segnale emesso dal writer, penal’interruzione della comunicazione per “rumori sospetti”…

Ma passiamo ora ad analizzare come è fatto il sensore di un transponder percercare di replicarlo nel nostro sniffer ideale. In precedenza ho già accennato al fatto che il campo magnetico emesso dalwriter viene captato da una bobina. Una bobina non è altro che un lungo filo dirame smaltato avvolto su un supporto. Allora, penserà qualcuno, bastaprendere un filo da trasformatore qualunque, arrotolarlo su un supportoqualunque facendo un numero di spire qualunque ed il gioco è fatto. Se siete molto fortunati potreste anche riuscire nell’impresa di raggomitolareuna bobina che abbia un minimo di sensibilità, ma noi preferiamo essere un po’più scientifici, vogliamo creare una bobina con la massima sensibilità e con ilminimo costo. Per raggiungere questo obiettivo dobbiamo conoscere l’effettonetto di ogni parametro che caratterizza una bobina per arrivare a forgiare unabobina allo stato dell’arte e sotto il nostro pieno controllo. Cominciamo col dire che il parametro più importante che influenza lasensibilità della nostra bobina è la sua induttanza, che esprimeremo in uH(microHenry).

Page 6: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 6

Nel nostro caso possiamo pensare all’induttanza come all’attitudine di unabobina di assorbire il campo magnetico dallo spazio circostante per poterlorendere poi sottoforma di tensione ai suoi capi. Più campo magnetico la bobinaè in grado di assorbire e più tensione avremo ai suoi capi e dunque maggiorsensibilità. Dunque cosa aspettiamo? Perché accontentarci di una bobina da 30uH,facciamola da 100uH, anzi no, da 200uH. E perché non di più? Come in tutte le cose occorre cercare il giusto compromesso, perché unabobina con una grande induttanza è molto sensibile ma presenta un paio disvantaggi importanti:

a) occorre molto filo e molta pazienza dunque costa di più costruirla;b) se si avvicina troppo al writer rischia di assorbire talmente tanto campomagnetico da farsi scoprire esattamente come un elefante che origlia in unacristalleria;

Allora esploriamo l’estremo opposto: se avvolgiamo una bobina di piccolainduttanza, 10uH, anzi no, solo 5uH, cosa succede? In questo caso avremo unabobina molto semplice da realizzare, agile e silenziosa come un gatto mapurtroppo un po’ dura d’orecchi per cui anche se la posizionassimo a pochissimimillimetri dal writer otterremmo una tensione ai capi molto bassa, dell’ordinedei 10-100mVpp, valore decisamente noioso da gestire per l’elettronica dellosniffer, che dovrebbe integrare una precisa sezione di amplificazione,demodulazione e squadratura con tutte le complicazioni e i costi del caso. Occorre quindi prendere una prima importante decisione progettuale:preferiamo adottare una bobina con un discreto udito accoppiata ad undemodulatore semplice oppure preferiamo adottare una bobina un po’ durad’orecchi accoppiata ad un demodulatore più sensibile ma più complesso? Siccome la mia esperienza pratica per ora è limitata all’utilizzo di undemodulatore semplice realizzato usando un singolo chip, la scelta operata inquesta guida è abbastanza scontata, ma non è detto che in futuro non si possaprovare ad accoppiare una buona bobina con un demodulatore più complessoche riesca a captare il segnale anche a 5-6cm di distanza dal writer (speravate5-6 metri eh?)…

Nel chiarire il concetto di induttanza ho prematuramente accennato ad un“demodulatore” da accoppiare alla bobina senza spiegare a cosa ci serve. Perora consideriamolo come una magica scatola nera in grado di trasformare ilsegnale analogico messo gentilmente a disposizione dalla nostra bobina in unsegnale digitale digeribile da una porta di un microcontrollore o da una portaseriale di un notebook per permetterci di salvare i dati catturati in modopermanente su una eeprom o su un file.

Ma rimaniamo focalizzati sulla nostra bobina ideale: dobbiamo realizzare unabobina con una sensibilità sufficiente per poter generare una tensione digeribiledal chip demodulatore. Del chip in questione, il JB125, si sa abbastanza poco e

Page 7: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 7

pare non trovarsi presso distributori ufficiali, l’unica fonte diapprovvigionamento che ho trovato è costituita da un pugno di sperimentatoriche ha messo in piedi una scarna paginetta su http://tfc.altervista.org e chedistribuisce il chip fino ad esaurimento scorte al prezzo di 15 euro spedizionecompresa. Sullo schema dello sniffer che propongono e che ho fedelmentereplicato viene indicata la sensibilità dell’ingresso del JB125: 2.5Vpp. Ciò significa che ci basta realizzare una bobina con una sensibilità sufficientea produrre almeno 2.5Vpp ai suoi capi quando la posizioniamo molto vicina allasorgente del campo magnetico.

Ma che induttanza deve avere la bobina per essere così sensibile? Cercare dicalcolarlo in via teorica è abbastanza complesso perché non conosciamo apriori l’intensità del campo magnetico indotto dal writer nel punto in cui sitroverà fisicamente la nostra bobina per cui ci affideremo al metodo empirico:l’induttanza minima è quella che ha dato prova di funzionare, una bobina conun’induttanza compresa tra 25uH e 70uH pare essere un buon compromessoin termini di sensibilità, velocità di risposta, intrusività e facilità costruttiva. Ovviamente si possono provare anche valori superiori al range indicato:sapendo che il campo magnetico decresce molto velocemente con la distanza èovvio che se la distanza dal writer aumenta anche solo di 4-5mm occorreaumentare un po’ l’induttanza per ottenere un segnale che sia ancorasufficientemente forte ai capi della bobina. Per tagliare la testa al toro avvolgete la bobina posizionandola il più vicinopossibile al writer, ogni mm di distanza in più vi fa perdere preziosi Vpp ai capidella bobina.

Decidiamo dunque di costruire una bobina all’interno del range empirico cheho definito, il problema che ci si pone ora è: quali fattori costruttivi influenzanol’induttanza di una bobina? Proverò a rispondere analizzandoli uno ad uno:

Supporto sul quale avvolgiamo la bobina.Vi sono materiali detti ferromagnetici (leghe di ferro, ferriti) che agiscono daveri e propri amplificatori magnetici moltiplicando il valore dell’induttanza dellabobina avvolta su di essi. Siccome il loro effetto rischia di creare degli elefantiin cristalleria producendo induttanze eccessive per i nostri scopi, decidiamo diavvolgere la bobina esclusivamente su materiali non ferromagnetici qualimateriali plastici, carta, cartoncino, legno. Le bobine realizzate in questo modovengono anche chiamate bobine in aria e la loro induttanza risulta esseremolto più predicibile.

Fattore di forma della bobina.La forma dell’avvolgimento influenza poco l’induttanza della nostra bobina. Unavvolgimento su un supporto di forma rettangolare produce un’induttanzalievemente superiore rispetto ad un avvolgimento su un supporto di formacilindrica (solenoide) a parità di area. Decidiamo di avvolgere la nostra bobinasu un supporto di forma rettangolare.

Page 8: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 8

Sezione della bobina.Maggiore è l’area della bobina (sezione) e più grande è l’induttanza. Decidiamodi avvolgere la bobina su un supporto plastico di sezione 11x5mm.

Numero di spire dell’avvolgimento.Maggiore è il numero di spire e maggiore è l’induttanza della bobina. Perrealizzare una bobina facilmente riproducibile decidiamo di avvolgere le spiresu un singolo strato (single layer) senza mai sovrapporre le spire.Decidiamo di avvolgere 130 spire di filo di rame.

Serraggio delle spire e regolarità dell’avvolgimento.Per garantire un segnale privo di distorsioni è necessario porre particolare curanell’avvolgimento che deve presentarsi regolare e senza spazi tra una spira el’altra per massimizzare l’induttanza. Per assicurare il massimo numero di spireper unità di lunghezza serrare con le unghie le spire mano a mano chevengono avvolte tenendo in tensione il filo smaltato. Usando un filo di diametro0.1mm l’avvolgimento di 130 spire non deve essere più lungo di 15mm.

Diametro del filo di rame smaltato.Un diametro piccolo ci permette di massimizzare il numero di spire a parità dilunghezza dell’avvolgimento e dunque massimizzare l’induttanza a parità divolume. Ho scelto il più piccolo diametro disponibile, 0.1mm (0.115mmcompreso lo smalto isolante) che ci offre anche un interessante vantaggio chespiegherò in seguito. Se avete difficoltà a reperirlo potete ordinarne unrocchetto intero per circa 9 euro su http://www.rs-components.it (Codice 337-7088).

Riepiloghiamo ora le caratteristiche della nostra bobina sperimentale:- il diametro del filo di rame da usare è di 0.1mm.- la bobina è avvolta su un supporto plastico di sezione rettangolare di

11x5mm.- l’avvolgimento della bobina è costituito da 130 spire serrate su un singolo

strato in modo tale da non superare i 15mm di lunghezza complessiva.

Una bobina siffatta è decisamente sensibile senza essere troppo invasiva, certooccorre una pazienza certosina per avvolgere 130 spire perfettamente serrate,se sfugge la bobina di mano occorre ricominciare tutto da capo…Vi suggerisco di tenere a portata di mano dei piccoli rettangoli di sottile scotchtrasparente per fissare gli estremi della bobina al termine dell’avvolgimento edi ricoprire poi l’intera bobina con un ulteriore strato di scotch protettivo.

Ora che la bobina è pronta è opportuno chiarire come va posizionata rispettoai due soggetti comunicanti: il writer e il transponder. Prendiamo ancora inconsiderazione il transponder PCF7931. Usualmente esso è affogato in un supporto plastico che lo protegge e lo rendemaneggiabile. Tale supporto plastico viene di norma introdotto in una cavitàrettangolare o cilindrica al cui interno è contenuta la bobina del writer.Dunque, dove avvolgiamo la nostra bobina sperimentale? L’idea più brillante

Page 9: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 9

consiste nell’avvolgere la bobina sullo stesso supporto plastico che contiene ilPCF7931 facendo attenzione a non avvolgerla sul PCF7931. Per quale motivo? Semplicemente perché se noi coprissimo il PCF7931 con la nostra bobinaschermeremmo il transponder impedendo al writer di alimentarlo tramite ilcampo magnetico. In altre parole è come se ci frapponessimo tra telecomandoe televisore, il telecomando non riuscirebbe a cambiare canale.

Siccome la nostra bobina di ascolto non deve disturbare la conversazione trawriter e tag è necessario iniziare l’avvolgimento appena termina il corpo deltransponder (vedi Figura 2). Vale la pena ricordare una regola importante: lamassima induzione elettromagnetica si ottiene ponendo le bobine coinvoltesullo stesso asse (tratteggiato in figura). Sebbene non venga mostrato infigura, anche la bobina contenuta all’interno del PCF7931 è coassiale con lealtre due bobine. Se per ipotesi ruotassimo di 90° la nostra bobina di ascolto,l’effetto di induzione sarebbe pressochè nullo, ossia avremmo tensione nullasulla bobina, a prescindere dal valore della sua induttanza.

Figura 2.Posizionamento della bobina rispetto a writer e tag.

Ai più attenti sarà rimasto un dubbio amletico: come facciamo a conoscerel’induttanza della bobina che abbiamo appena avvolto con cura certosina? Misurandola. Qualcuno possiede un induttanzimetro che riesca a misurare conprecisione i microHenry? La maggioranza di voi sicuramente ne è sprovvisto edunque occorre aguzzare l’ingegno per scoprire l’induttanza della vostrabobina. Per ora accontentiamoci del metodo teorico che vado ad illustrare, inseguito scopriremo come poter misurare l’induttanza in modo indiretto usandoun semplice multimetro (sì, avete capito bene, non ci sarà bisognodell’oscilloscopio!).

Transponder PCF7931

Bobina di ascolto

Supporto plastico

Al demodulatore JB125

Bobina del writer

Page 10: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 10

Stima teorica dell’induttanza della bobina.

Vi sono studiosi che hanno dedicato la vita allo sviluppo di funzionimatematiche complesse in grado di prevedere con grande precisionel’induttanza di una bobina sulla base delle proprie caratteristiche dimensionali(lato lungo, lato corto, lunghezza dell’avvolgimento, numero di spire). Personalmente ho messo a punto un programma DOS che implementa unadelle formule più raffinate in circolazione per stimare l’induttanza di bobine disezione rettangolare a singolo strato. Grazie a questo software vi posso già anticipare che la vostra bobina nuovafiammante, se avete seguito scrupolosamente le istruzioni, ha un’induttanza diesattamente 63uH. Comodo, non è vero? Se volete implementare un programmino simile doveteprocurarvi in biblioteca una copia del testo di F.W.Grover, oppure se siete pigrie svogliati con 25 euro potete acquistare una copia del mio software di calcoloche automaticamente calcola induttanza, resistenza DC, fattore di merito econdensatore di accordo della bobina (Figura 4).

E’ venuto ora il momento di fare un salto di qualità: avrete senz’altro sentitoparlare del fatto che la bobina va “accordata” con un condensatore posto inparallelo per ottenere la massima tensione ai suoi capi. Ma come, vi chiederete, non si era appena detto che la nostra bobina era giàpronta per captare con buona sensibilità ogni bisbiglio proveniente dal writer?Cos’è questa storia del condensatore da aggiungere in parallelo? In effetti la nostra bobina così come si presenta in Figura 2 è già in grado diprodurre una tensione ai suoi capi in presenza di un campo magnetico variabilema se vi dicessi che basta porre in parallelo alla bobina un condensatore divalore opportuno per amplificare il segnale di 4-5 volte ci sputereste sopra? Certo se la tensione prodotta dalla sola bobina fosse già sufficiente a scaldareil cuore del JB125 saremmo già a posto. Ma purtroppo la sola bobina non èsufficiente, abbiamo bisogno di amplificare un po’ il segnale prima di darlo inpasto al JB125 e cosa c’è di più veloce ed economico di un amplificatorecostituito da un semplice e banale condensatore ceramico?

A qualcuno questa sembrerà magia, ma si tratta solo di sfruttare unfenomeno elettrico chiamato “risonanza”. Per usare una metafora possiamopensare che il condensatore in parallelo agisca come la cassa di risonanza diuna chitarra o di un tamburo: basta un piccolo tocco sulle corde della chitarra osulla pelle di tamburo per produrre suoni di intensità magnificata. Allo stesso modo il condensatore, se scelto di valore opportuno, agisce sullabobina restituendole esattamente la stessa energia che un istante prima labobina aveva captato e donato al condensatore. C’è quindi una sorta dirimpallo energetico tra la bobina (L) ed il condensatore (C), un circolo virtuosoassimilabile ad un’altalena: una volta avviata basta una piccola spinta perportarla sempre più in alto ad ogni nuova oscillazione. Ma veniamo alle questioni pratiche: c’è un limite alle performance diamplificazione della coppia bobina-condensatore? In altri termini possiamo

Page 11: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 11

riuscire ad amplificare per 5, per 10 o anche per 20 la tensione sulla bobinasemplicemente scegliendo un condensatore di valore opportuno? Dipende. La risposta risiede nell’individuazione del principale responsabile dellalimitazione dell’amplificazione: la resistenza interna della bobina (RL). Dobbiamo infatti pensare che la nostra bobina è costituita da più di 4 metri difilo di rame smaltato e dunque ha una precisa resistenza DC, facilmentemisurabile con un multimetro. Se avete costruito la bobina correttamentedovreste misurare una resistenza ai capi della bobina di circa 9 ohm. Questa resistenza è chiamata resistenza DC perché misurata in correntecontinua ma per un fenomeno detto “effetto pelle” la resistenza effettiva èdestinata ad aumentare con la frequenza del segnale di lavoro. Fortunatamente alla bassa frequenza di 125KHz l’effetto pelle èassolutamente trascurabile usando un filo di rame da 0.1mm di diametro,dunque il multimetro ci fornisce già la resistenza effettiva che ci interessa (i piùcuriosi che volessero provare diametri di filo diversi da 0.1mm sappino chel’effetto pelle comincia a farsi apprezzabile solo con diametri molto maggiori:considerate che usando un diametro da 0.3mm la resistenza effettiva aumentaper effetto pelle appena dell’ 1% rispetto alla resistenza DC misurata con ilmultimetro).Come dicevo la nostra bobina ha una resistenza effettiva RL =9 ohm.Tale resistenza ci permetterà ora di calcolare l’amplificazione massimapotenzialmente ottenibile dal nostro circuito LC risonante parallelo.Il fattore di amplificazione massimo del nostro LC risonante è espresso dalcosiddetto “fattore di merito” della bobina (Q):

Q= 2πfL/ RL

dove f è la nostra frequenza di lavoro (125KHz) ed L è l’induttanza dellabobina.Sapendo che la nostra bobina ha un’induttanza L=63uH, dai calcoli Q=5.5

Dunque ciò significa che se scegliamo il condensatore giusto riusciremo adamplificare il segnale fornito dalla sola bobina di ben 5 volte e mezzo! Direi chevale proprio la pena sfruttare questa magica risonanza, che ne dite?

Sono certo che qualcuno di voi si chiederà: perché allora non sfruttare meglio ilfenomeno della risonanza scegliendo un filo di rame di diametro maggiore perpoter alzare ancora di più il Q della bobina? In effetti si può fare, usando un filo da 0.15mm di diametro si puòraggiungere un Q di circa 8 con il vantaggio di una maggior facilità diavvolgimento ma vi è anche il rovescio della medaglia: un filo più grossoimplica un minor numero di spire a parità di lunghezza dell’avvolgimento edunque minor induttanza ottenibile. In pratica è vero che l’amplificazionerisulta più vigorosa ma la tensione di partenza che viene amplificata è piùbassa. Vi è anche un altro prezzo da pagare nel scegliere un Q alto: la rapiditàdi risposta della bobina diminuisce e noi desideriamo una bobina scattante,capace di captare impulsi di durata molto breve, ricordate? Per la nostraapplicazione dunque meglio non spingersi oltre Q=10 per non rischiare di

Page 12: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 12

ottenere una bobina troppo lenta nel comunicarci le variazioni del campomagnetico captato.

Ma la vera ragione che mi ha indotto a preferire il diametro 0.1mm consistenella maggior facilità di accordo dell’LC risonante, in altre parole è più facilecentrare al primo colpo il valore giusto del condensatore in modo tale dalavorare in perfetta risonanza. Ma capirete meglio cosa questo significhi nonappena ci addentreremo nella misteriosa operazione di “accordo” della bobina.

Figura 3.La risonanza di un LC parallelo con tre diverse bobine.

Si osservi attentamente il grafico di Figura 3. Il grafico contiene tre curve,ogni curva rappresenta una diversa bobina, caratterizzata da un preciso fattoredi merito Q (che come abbiamo visto dipende da L e da RL). Sulle ascisse troviamo la frequenza di lavoro, l’unità di misura può essereintesa in centinaia di KHz, sulle ordinate troviamo l’amplificazione subita dalsegnale presente sulla bobina grazie al fenomeno della risonanza. La curvaindicata con Q=5 approssima bene il comportamento della nostra bobina.Notiamo che tutte le curve sono contraddistinte da una forma a campana chetende a stringersi e ad alzarsi mano a mano che scegliamo bobine con Q piùgrande.

Ora, cosa significa accordare una bobina con un condensatore in parallelo?Significa trovare quel valore di capacità che permette di centrare la campanadella risonanza esattamente sulla nostra frequenza di lavoro (125KHz). In altre parole l’effetto di un condensatore posto in parallelo alla bobinaconsiste nello shiftare a destra o a sinistra la campana della risonanza diFigura 3. Più precisamente se alzo il valore di capacità la campana si spostaverso sinistra, se abbasso il valore di capacità la campana si sposta versodestra. Se allora voglio spostare il picco della campana della nostra bobina propriosulla frequenza di 125KHz, che condensatore devo usare?

Page 13: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 13

Ecco la veloce formuletta approssimata:

C=1/((2πfres)2L) Prima formula inversa della risonanza.

Ricordando che L=63uH e fres=125KHz ne risulta C=25nF.Ciò significa che ponendo in parallelo alla bobina un condensatore da 25nF ilnostro circuito LC parallelo va in risonanza alla frequenza di 125KHz, ossiaquando vengono captati segnali a 125KHz verranno amplificati di Q=5.5 volte.

Adesso cominciate a capire perché ho preferito avere un Q della bobina nontroppo elevato? Se io avessi realizzato una bobina con un Q=10 sarebbe statodecisamente più delicato trovare l’esatto valore del condensatore che centrassela campana esattamente sui 125KHz perché in risonanza la campana è moltostretta e sarebbe bastato qualche nF in più o in meno (considerando anche latolleranza di costruzione del condensatore) per ritrovarmi a perdere anche il10% di amplificazione. Con un Q=5.5 posso invece permettermi di piazzare un qualunquecondensatore nel range 23-27nF potendomi considerare ancora in risonanza(cioè nello stato di massima amplificazione per quella particolare bobina). In pratica usando bobine con un Q basso la risonanza è un cocuzzolo dellamontagna comodo e spazioso, quasi un altipiano, usando invece bobine con unQ alto la risonanza diventa un picco acuminato sul quale è più difficile rimanerein bilico ed il rischio è quello di cadere facilmente a metà montagna se non siaccorda la bobina con attenzione.

Potreste infine chiedervi quale sarebbe stata la frequenza di risonanza nel casoavessimo inserito un condensatore di soli 23nF. Per rispondere è sufficienteutilizzare la seguente formula approssimata:

fres=1/(2π√LC) Formula della risonanza.

Dai calcoli risulta una campana il cui picco è centrato sulla frequenza dirisonanza di 132KHz, leggermente superiore a 125KHz ma perfettamenteutilizzabile se il Q della bobina è relativamente basso come nel nostro caso.

Vi faccio ora prendere un po’ di fiato con qualche indicazione di caratterepratico: il filo di rame smaltato è saldabile, basta scaldarlo ad almeno 350°Ccon la punta del saldatore per rimuovere il poliuretano isolante che lo ricopre. Quando avete individuato il valore teorico di capacità da usare ma non avetea disposizione un valore standard potete raggiungere il valore desideratocombinando diversi condensatori in serie o in parallelo. Ricordate che persommare due capacità occorre metterle in parallelo, se invece mettiamo inserie due capacità uguali il valore risultante dimezza. Nel nostro caso specifico dunque per avvicinarci alla capacità di 25nF cherisulta dai calcoli basta mettere in serie due condensatori standard da 47nF edottenere così 23.5nF, valore che ci permette di lavorare comunque in zonarisonante.

Page 14: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 14

In Figura 4 potete vedere l’output fornito dal software di calcolo cui hoaccennato in precedenza, per semplicità i valori usati nella guida sono statiarrotondati.

Figura 4.Il software coil.exe per il calcolo automatico dei parametri della bobina.

Molti di voi avranno sicuramente notato che il software calcola il valore delcondensatore di accordo per due differenti tipologie di bipolo LC risonante:serie e parallelo. Il valore che ci interessa in questo caso è quello relativo albipolo LC parallelo. Noterete che la differenza del condensatore di accordo nelledue tipologie è minima ed è per questo che in letteratura si tende ad usare lastessa formula per entrambe le tipologie, formula già mostrata nella paginaprecedente. In realtà tale formula è esatta solo per il bipolo serie mentre per ilbipolo parallelo è una buona approssimazione. Il software calcola per entrambii casi le rispettive formule esatte ed è per questo che i condensatori di accordosi differenziano leggermente. Siccome la differenza è esigua, ai fini pratici siutilizza comunemente la semplice formula della risonanza per entrambe letipologie di bipolo. Il software inoltre fornisce una stima teorica della sensibilità della bobinacalcolando quanti Vpp essa è in grado di generare se sottoposta adun’induzione magnetica di 170 microWeber/m2 (valore tipico per programmareun PCF7931). Dalla figura si vede che la sensibilità teorica è alta, la nostrabobina è capace di generare ai suoi capi ben 10Vpp!

Se avete letto attentamente fino a questo punto ora non solo avete acquisitouna discreta base teorica sulla tecnologia RFID ma avete anche accordato lavostra prima bobina. Ma… produrrà una tensione sufficiente per il JB125 ?E’ il momento di scoprirlo costruendo uno strumentino tanto semplice quantoefficace.

Page 15: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 15

Costruzione di un misuratore di sensibilità della bobina.

Materiale occorrente:- 4 diodi 1N4148.- 1 condensatore ceramico da 10nF.- 1 multimetro con impedenza di ingresso di 1Megaohm.

Lo schematico del nostro misuratore che chiameremo “power-meter” èriportato in Figura 5. Per scoprire la sensibilità della nostra bobina è sufficiente avvicinarla il piùpossibile al writer per renderci conto se il segnale captato è abbastanza intensoda poter essere digerito dal demodulatore JB125. Il multimetro deve essere impostato su VDC in quanto leggeremo un valore ditensione continuo. Tale valore di tensione non rappresenta il valore di picco delsegnale captato ma ci fornisce comunque una preziosa informazione in quantoil valore rilevato è proporzionale al valore picco-picco del segnale (Vpp)presente ai capi della bobina accordata.

Ora, qual è il valore minimo che deve misurare il power-meter per garantirciche il chip JB125 potrà funzionare correttamente? Dalle prove empiricheeffettuate con un multimetro con impedenza di ingresso da 1 Megaohm, se conil multimetro misurate almeno 1.2Vdc avete una bobina che vi fornisce unsegnale sufficiente per poter usare il demodulatore JB125 (ciò significa che aicapi della bobina vi sono almeno 2.5Vpp, valore minimo per poter usare ilJB125, come riportato dalle specifiche).

Figura 5.Schema del power-meter, misuratore di sensibilità della bobina.

Page 16: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 16

Se addirittura misurate 2-3Vdc o più avete costruito un gioiellino…Supponiamo che invece misuriate appena 0.8Vdc per esempio, dove può stareil problema? Vi possono essere diverse ragioni che concorrono a rendere lavostra bobina poco sensibile, vediamole:

La bobina non lavora in risonanza.Questo succede se avete accordato male la bobina scegliendo un condensatoredi valore sbagliato o troppo lontano dal valore teorico calcolato. Naturalmentelo stesso problema si pone se l’induttanza stimata non corrisponde a quellareale: il condensatore magari è teoricamente giusto, ma calcolato partendo daun valore sbagliato dell’induttanza. Vedremo fra poco come sfruttare il power-meter appena costruito per essere certi di aver accordato bene la bobina. Inpratica usando il power-meter saremo in grado di accordare la bobina pur nonconoscendone l’induttanza.

L’induttanza della bobina è troppo bassa.Pur avendo accordato perfettamente la bobina, l’induttanza della stessapotrebbe essere troppo bassa per generare un segnale decente. Questo puòaccadere se avete avvolto poche spire attorno al supporto e/o se la sezione delsupporto è molto piccola.

La distanza dal writer è eccessiva.Pur avendo accordato la bobina ad opera d’arte, qualche mm di distanza ditroppo dalla bobina del writer possono rendere vano lo sforzo fatto, ricordateche il campo magnetico si indebolisce rapidamente con la distanza. Dovetetrovare il modo di diminuire la distanza oppure dovete optare per una bobina diinduttanza maggiore riaccordandola opportunamente.

Il campo magnetico del writer è debole.Se il campo magnetico del writer è appena sufficiente per programmare iltransponder le cose si fanno più complesse, oltre ad avvicinarvi il più possibiledovrete aumentare ulteriormente l’induttanza della bobina. Ovviamente labobina dovrà essere come sempre perfettamente accordata.

Come ho accennato in precedenza il power-meter appena costruito puòdivenire un prezioso strumento nel caso non abbiate un oscilloscopio a portatadi mano o non siete in possesso del software per stimare l’induttanza dellavostra bobina, fra poco vedremo perchè.

Prima di procedere vorrei infine chiarire il motivo per cui non possiamo fare ameno del power-meter connettendoci alla bobina direttamente con ilmultimetro in AC. Se lo faceste molto probabilmente leggereste una tensionenulla semplicemente perché il vostro multimetro è in grado di misurare latensione AC RMS (valore efficace) solo fino ad una frequenza di 10-20KHzmax, difficilmente potrà andare oltre e noi stiamo lavorando a ben 125KHz.

Page 17: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 17

Come accordare una bobina senza usare l’oscilloscopio.

Materiale occorrente:- un generatore sinusoidale a frequenza variabile da 0 a 300KHz.- un resistore da 100 ohm ¼W.- il vostro fido power-meter.- un multimetro.

Come potete vedere chiaramente dalla Figura 6 il generatore sinusoidalealimenta tramite un resistore di protezione la bobina di induttanza sconosciutaa cui è stato posto in parallelo un condensatore ceramico da 47nF.Il power-meter ai capi della bobina sostituisce l’oscilloscopio fornendoci comerisposta un livello di tensione DC. Il valore del condensatore ceramico non è molto importante, possiamoscegliere un valore compreso tra 22nF e 100nF, la cosa veramente importanteè che il valore sia perfettamente conosciuto: usate un condensatore con bassatolleranza oppure, meglio ancora, misuratene il valore con un multimetrodotato della funzione capacimetro.

Figura 6.Come accordare una bobina facendo a meno dell’oscilloscopio.

Page 18: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 18

Ora, il primo obiettivo consiste nello scoprire l’induttanza della vostra bobina. Ilbipolo LC parallelo che stiamo valutando sarà caratterizzato da una campanaposizionata in un punto a noi sconosciuto lungo l’asse della frequenza (vediancora Figura 3). Se noi scoprissimo a quale frequenza è posizionato il piccodi quella campana avremmo scoperto la frequenza di risonanza di quelparticolare bipolo. Come facciamo a scoprire dove è posizionata in frequenzala campana?Semplice, basta agire in frequenza sul generatore sinusoidale fino adindividuare quella frequenza che rende massimo il valore di tensione misuratodal power-meter. Ed essendo a forma di campana faremo presto a capire se cistiamo allontanando od avvicinando alla risonanza, basta tenere d’occhio ilpower-meter. Supponiamo per esempio di misurare queste coppie di valori:

Frequenza Tensione power-meter

80KHz 1.75Vdc90KHz 1.88Vdc100KHz 1.95Vdc110KHz 1.85Vdc120KHz 1.70Vdc

Avete indovinato dove sta posizionata la campana? Avrà il suo picco dirisonanza tra i 90KHz e i 110KHz, per scoprirlo con maggior precisione basteràprovare le frequenze in questo range con step di 1KHz, così scopriremo qual èl’esatta frequenza di risonanza del bipolo.Supponiamo allora di aver scoperto che la frequenza di risonanza del bipolo inesame vale 94KHz.

Dunque adesso che conosciamo la frequenza di risonanza del bipolo (94KHz) eil valore del condensatore (47nF), come calcoliamo l’induttanza della nostrabobina incognita? Ancora una volta con la formula inversa della risonanza:

L=1/((2πfres)2C) Seconda formula inversa della risonanza.

Dai calcoli risulta L=61uH, la bobina promette bene, adesso che conosciamocon buona precisione l’induttanza della bobina siamo a cavallo, ci ritroviamoesattamente nella condizione in cui ci trovavamo quando, consultandol’oracolo, vi ho rivelato l’induttanza della vostra bobina.Basta ora ricalcolare il giusto valore del condensatore per far sì che il bipolovada in risonanza a 125KHz (vedi prima formula inversa della risonanza data inprecedenza). Dalla formula risulta C=26uH, valore ovviamente molto simile aquello calcolato per la precedente bobina essendo le induttanze di valoresimilare.

Adesso possiamo sostituire al condensatore di test da 47nF il nostrocondensatore di accordo da 26uH e verificare che la bobina sia oraeffettivamente perfettamente accordata sui 125KHz.

Page 19: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 19

Come? Semplicemente spazzolando di nuovo le frequenze con il generatore etoccando con mano che il valore massimo fornito dal power-meter è guardacaso proprio nell’intorno dei 125KHz: la bobina dunque non è stata solomisurata ma è anche stata perfettamente accordata senza fare alcun usodell’oscilloscopio!

La procedura può risultare di primo acchito macchinosa ma vi assicuro che semandate a memoria le tre formulette basilari della risonanza e tenete a portatadi mano una calcolatrice potete accordare una bobina in pochi minuti. Naturalmente chi dispone di un oscilloscopio può utilizzarlo al posto delpower-meter per verificare direttamente a quale frequenza il segnalesinusoidale raggiunge la massima ampiezza picco-picco. Chi invece non dispone né di un oscilloscopio né di un generatore sinusoidalenon deve fare altro che costruirsi un semplice multivibratore astabile seguendole indicazioni che seguono.

Accordare una bobina senza oscilloscopio nè generatore sinusoidale.

Si può riuscire ad accordare la nostra bobina sostituendo il generatoresinusoidale usato nel metodo precedente con un semplice multivibratoreastabile basato sul comunissimo timer NE555/LM555 come da Figura 7.

Figura 7.Schema completo per l’accordo della bobina usando solo un multimetro.

Page 20: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 20

Il timer NE555 genera un’onda quadra con dutycycle 50% e frequenza tarabilecon il trimmer multigiri da 50Kohm. Non usare la versione CMOS del timer(LMC555) in quanto non è in grado di erogare abbastanza corrente. La tensione di alimentazione del timer può spaziare tipicamente tra 5V e 15V,suggerisco di usare almeno 12V per avere maggiore sensibilità di misura. La procedura di taratura è identica a quella descritta in precedenza,suggerisco di partire con il trimmer settato alla frequenza più alta (circa200KHz) per poi scendere gradualmente monitorando il power-meter perscoprire la posizione della campana di risonanza. L’unica differenza pratica rispetto all’uso di un generatore sinusoidale dabanco consiste nel fatto che essendoci in questo caso un’onda quadra astimolare la bobina (invece di una sinusoide), solo in prossimità dellafrequenza di risonanza si formerà sulla bobina una sinusoide perfetta, salendoin frequenza la sinusoide tenderà a trasformarsi in un’onda triangolare diampiezza via via inferiore, scendendo in frequenza la sinusoide comincerà adistorcere con ampiezza via via inferiore fino a diventare irriconoscibile. La cosa essenziale è comunque individuare quella frequenza che permette dimassimizzare il valore dc misurato dal power-meter, corrispondente allafrequenza di risonanza del bipolo LC parallelo in esame.

Ci stiamo avviciniamo al termine di questa articolata guida, siete ora padronidel know-how essenziale per poter procedere ad un livello più elevato distudio, il prossimo step consiste nel costruire uno sniffer completo connettendouna bobina perfettamente accordata ad un chip demodulatore come il JB125oppure ad un demodulatore più complesso che magari voi stessi progetterete.

Figura 8.La bobina accordata.

In Figura 8 potete finalmente vedere la bobina da 63uH descritta nella guida.Il condensatore di accordo è stato saldato nella parte terminale del supportoplastico e protetto dagli urti usando cera a caldo.

Page 21: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 21

Demodulare il segnale captato dalla bobina con un JB125.

Le uniche informazioni che sono riuscito a reperire su questo microchip sonoquelle contenute nello schema cartaceo speditomi insieme al chip che hoordinato online. In Figura 9 ho riprodotto lo schematico dello sniffer che vieneproposto, personalizzandolo con la bobina da 63uH che abbiamo appenaprogettato.

Figura 9.Schematico completo dello sniffer.

Rispetto allo schema originale, che sfrutta una linea di uscita (RTS, pin 7)della porta seriale per alimentare il chip, ho apportato una piccola varianteusando una comune pila transistor da 9V, per il resto lo schema è identico. Come potete vedere ho inserito la nostra bobina da 63uH accordata con duecondensatori da 47nF posti in serie. L’uscita del chip finisce direttamente sulla linea di input della porta serialedetta DSR (sul connettore maschio a 9 poli si tratta del pin 6).

A questo punto abbiamo a disposizione uno sniffer completo che trasforma ilsegnale modulato ASK di Figura 1 captato dalla nostra bobina in un segnaledigitale che commuta a livello logico alto se è presente il campo magneticovariabile, commuta a livello logico basso non appena il campo magnetico siinterrompe. In pratica lo sniffer ricostruisce il segnale “modulante” di Figura 1(per questo motivo si dice che il chip “demodula” il segnale ASK). Il segnale che dunque si presenterà all’ingresso DSR quando il writercomincerà ad inviare dati al PCF7931 sarà costituito da un primo impulso delladurata di 24us (il bit di start) seguito da una sequenza di impulsi della duratadi 48us (i bit della password) codificati usando la modalità PPM così comeabbiamo visto all’inizio della guida.

Page 22: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 22

Da qui in avanti dunque la palla passa finalmente al software il quale dovràsemplicemente campionare il segnale che giunge sulla porta DSR e salvarlo sufile per una successiva analisi dei dati campionati. Quella che segue è la routine principale di campionamento dei dati codificatain linguaggio BASIC a puro scopo esemplificativo. Ognuno potrà implementareil software di campionamento come meglio crede, usando il linguaggio chepreferisce. Come si vede la routine è decisamente semplice, è sufficienteeseguire una istruzione IN sulla linea DSR della porta seriale (COM1 o COM2)accedendo direttamente ai registri di I/O della seriale.

‘Pinout porta seriale del PC.‘‘ 9poli_male 25poli_male‘‘ out RTS 7 4 (bit 1)‘ out DTR 4 20 (bit 0)‘ in DSR 6 6 (bit 5)‘ in CTS 8 5 (bit 4)‘ GND 5 7

comport=3f8h ‘indirizzo base porta seriale: COM1=3f8h COM2=2f8h

outport=comport+4 ‘registro di output RTS e DTR.bitout=1 ‘RTS= bit 1, DTR= bit 0.out(outport,bitout,1) ‘setta la linea RTS a 1 (+12V) per alimentare il JB125.

inport=comport+6 ‘registro di input DSR e CTS.bitin=5 ‘DSR=bit 5, CTS= bit 4.

rx$="" ‘stringa destinata a contenere i dati campionati.buffer=400000 ‘numero di bit da acquisire.for i=1 to buffer bit=in(inport,bitin) ‘acquisizione di un bit dalla linea fisica DSR. rx$=rx$+string$(bit) ‘salvataggio del bit su stringa.next iprint rx$ ‘stampa dei bit campionati.

Come si vede, nel listato ho inserito anche l’istruzione OUT che permette diimpostare a +12V l’uscita DTR nel caso vogliate alimentare il JB125direttamente dalla seriale come da schema originale TFC. Usando la seriale di un notebook la tensione presente sulla linea DTR èminore di 12V e si aggira sui 6-7V, valore comunque sufficiente per alimentareil grabber. Vi suggerisco di operare direttamente da DOS nativo usando un floppy o unapartizione DOS dedicata in quanto i recenti sistemi operativi Win2000 e WinXP

Page 23: PCF7931 Guida Completa Allo Sniffing

©Copyright 2005 -Tutti i diritti sono riservati. 23

non permettono più di accedere direttamente agli indirizzi di I/O rendendo laprocedura poco efficiente. L’obiettivo infatti è quello di riuscire a campionare abbastanza velocementeda non perdere neanche un impulso. Considerando che il writer invia al transponder unicamente impulsi di durata24us e 48us è sufficiente riuscire a campionare un sample ogni 5us per esserecerti di non perdere dati preziosi. Questo è facile da ottenere anche sumacchine non recentissime. Una volta salvati i sample su file non vi resta che armarvi di datasheet eprocedere all’interpretazione degli impulsi codificati in PPM scorrendo il file deisample ed annotando manualmente l’intervallo temporale che separa ogniimpulso dal successivo. Non occorre comunque che io entri nei dettaglisull’organizzazione dei dati inviati in sequenza dal writer (1 bit di start, 1 bit dipassword enable, 56 bit di password, ecc…), il datasheet del PCF7931 è lavostra migliore fonte informativa, fatene tesoro.

Un’ultima chicca prima di lasciarvi, se avete accordato la vostra bobina senzapower-meter, semplicemente monitorando con un oscilloscopio il segnalesinusoidale presente ai suoi capi, potete finalmente vedere il contenutoinformativo trasmesso ciclicamente dal transponder. E’ infatti sufficienteposizionare il PCF7931 come in Figura 8 e osservare il segnale che si presentasull’oscilloscopio. Noterete che il segnale sinusoidale viene modulatodigitalmente dal PCF7931 (il debole segnale modulato presente agli estremidella portante ha un’ampiezza attorno ai 200mV). Se avete un oscilloscopiodigitale potete impostare a 10ms la base dei tempi e congelare un interoblocco di dati (16 bytes) trasmesso dal transponder. In pratica ora disponete diun rozzo lettore di PCF7931. Cercate di decodificare manualmente la sequenzadigitale catturata stampandola su carta, è un ottimo esercizio didattico primadi pensare ad una futura decodifica software.

Adesso è davvero tutto, mi auguro che questa guida abbia chiarito molti degliaspetti oscuri e misteriosi che circondano l’affascinante mondo della tecnologiaRFID.

Fate buon uso del prezioso know-how acquisito fin qui e proseguite nellostudio, l’argomento della prossima guida consisterà nel progettare e costruireun’interfaccia di programmazione per il transponder PCF7931.

-TheInsider-