Il software di seguito presentato è un esempio di utilizzo delle smart card contactless RFID Mifare(R) da 4Kbyte della Philips. Il lettore della carta in radiofrequenza che ho utilizzato per il progetto è il modello GemTAG x501 USB della Gemini2K Un grazie particolare al signor. Stoyan Yordanov della Gemini2k per l'aiuto fornitomi nell'utilizzo e nella comprensione della loro libreria.
La Gemini2K fornisce insieme al lettore di
smart card le librerie dinamiche per la gestione delle routine di base di accesso alla gestione delle carte contactless (libgemtagapi.dylib)
In questo progetto ho utilizzato tali ed ho incapsulato alcune delle funzionalita' offerte dalla libreria in un classe in Objective C / COCOA e quindi in un oggetto denominato FGMifareObj di seguito descritto.
Per l'utilizzo dell'oggetto creato ho infine realizzato questa piccola applicazione che consente di leggere, scrivere i dati nella smart card Mifare Card da 4K.
Una smart cart Mifare da 4K puo' essere vista come un insieme di BLOCCHI o come un insieme di SETTORI. In pratica, dando un sguardo alla documentazione della Philips, si puo' vedere che è formata da 32 SETTORI da 48 BYTES di DATI e da altri 8 SETTORI da 240 BYTES di dati.
Ciascun settore da 48 bytes è formato da 3 BLOCCHI da 16 BYTES, mentre i restanti 8 settori da 240 bytes sono formati da 14 BLOCCHI da 16 BYTES.
Ciascun settore ha inoltre un ulteriore BLOCCO di 16 BYTES che viene chiamato TRAILER BLOCK e contine le informazioni relative alle chiavi di accesso (Key A e Key B) e ai diritti di accesso ai singoli blocchi del settore (ACCESS BITS). Quindi, riepilogando, possiamo definire le chiavi e i diritti di accesso di ogni singolo blocco delle carta Mifare. Nel mio progetto, mi premeva realizzare la scrittura e la lettura di tutta l'area di memoria dati disponibile della card in una sola funzione, come se avessi a disposizione un unico blocco di memoria da 3,5KB circa su cui leggere e scrivere dati. Per realizzare tale modalità occorre che TUTTI I BLOCCHI DELLA CARTA abbiano gli stessi diritti di accesso e le stesse chiavi di accesso.
Le chiavi di accesso: Sono composte da 6 BYTES e possono essere due, chiamate appunto KEY A e KEY B.
IL BLOCCO TRAILER Il blocco trailer, consente di memorizzare il valore delle chiavi A e B e nello stesso tempo la memorizzazione delle impostazioni dei Bits di accesso. I Bits di accesso sono realativi sia all'accesso dei blocchi dati sia di accesso allo stesso blocco trailer.
Sono presenti TRE BYTES che determinano appunto, in base alla configurazione dei loro bits, che tipo di accesso viene fornito. Per una trattazione completa, si veda il sito della Philips dal quale è possibile scaricare la documentazione tecnica relativa alle carte mifare 4k.
I BLOCCHI DATI I blocchi dati contengono le informazioni che vogliamo memorizzare sulla carta, per poter leggere o scrivere tali informazioni, dobbiamo essere autorizzati. L'autorizzazione dipende dalla chiave che utilizziamo e dagli accessi che sono stati forniti dai Bits di accesso dei TRAILER block, relativamente all'accesso dei blocchi dati. Nel software di esempio, vengono gestire le varie modalità; ossia lettura e scrittura di un BLOCCO DATI, lettura e scrittura di un SETTORE e lettura e scrittura di TUTTA l'area dati della smart card.
Di seguito trovate il progetto scaricabile, l'eseguibile del programma e i sorgenti principali della classe indicata.
Tutti i nomi ed i marchi citati sono di proprietà dei rispettivi produttori.
Scorrete la pagina per visualizzare le immagini dell'applicazione FGMifareCard explorer. |