Passa al contingut principal

Introducció al mfrc522cli

Havia vist gent que copiava i escrivia Skylanders en lectors NFC, com el proxmark o el ACR122U, però en cap lloc havia vist com clonar una d’aquestes figuretes amb un MFRC522.
Jo ja disposava de microcontroladors Arduino així que escollir un MFRC522 era el camí més econòmic.

Quan per primera vegada vaig intentar fer una copia em vaig trobar amb una barrera, la dificultat per a poder emprar el lector mfrc522 d’una forma versàtil.

No vaig trobar cap sketch o exemple de com fer una lectura o còpia de forma genèrica, vull dir que per a cada targeta RFID havia de crear un sketch on s’inclogueren en el codi les claus i les funcions de escriptura o lectura adaptades al que volia fer en cada ocasió.

Aquests lectors són molt econòmics, si bé és cert que es poden aconseguir per 1€ o menys s’ha de tindre molta cura ja que no tots els lectors/escriptors tenen la mateixa qualitat.
Puc donar fe ja que de 2 lectors MFRC522 que tinc solament un pot llegir els Skylanders, l’altre falla suposadament per una falta de potència.
Es poden fer modificacions per a augmentar la potència però sempre és millor adquirir una unitat contrastada.
De totes formes inclús en el model de 1€ podrem gravar els nostres backups en targetes RFID, sempre i quan la targeta suporte que es puga escriure el bloc 0, també anomenades magic cards.


El mfrc522cli és un software per al ESP8266 o similars que ens permetrà fer les accions típiques d’un lector RFID genèric com pot ser:
- Llegir targetes completes.
- Escriure blocs o tota la targeta sencera, incloent el bloc 0 en aquelles targetes que ho suporten.
- Clonar targetes.
- Reparar targetes i els seus access bits/permisos (solament en magic cards).

De moment solament suporta mifare classic de 1k i permet emprar les claus A (l’ús de claus B encara no està disponible).

Ací teniu una breu descripció de la sintaxi del mfrc522cli

Establir la clau A de lectura/escriptura d’un sector (per defecte les claus A tenen el valor de FFFFFFFFFFFF) :

lka 3 a0a1a2a3a4a5
Llegir contingut de la targeta al buffer intern
read card
Mostrar el UID:
read uid
Mostrar el contingut del buffer de lectura/escriptura:
show data
Mostrar les claus de lectura escriptura
show keys
Escriure sols blocs de dades, no escriurà el bloc 0 o els blocs trailer.
write card 
Escriure sols blocs trailer, no el bloc 0 ni els blocs de dades:
write trailer
Escriu sols el bloc 0:
write zero
Escriu tot, dades, trailer i bloc 0:
write clone

Exemple 1:
Suposem que tenim una targeta ja escrita amb la clau d’accés al sector 1 A0A1A2A3A4A5 i volem:
    • escriure en el bloc 4 (que pertany al sector 1) el valor: «abc00000000000000000000000000000»
    • Sobreescriure el trailer block del sector 1 per «FFFFFFFFFFFFFF078069FFFFFFFFFFFF» de forma que li canviem les claus i els bits d’accés.
Caldria fer:
lb 4 abc00000000000000000000000000000  // Carreguem en el buffer intern el valor del bloc 4
lb 7 FFFFFFFFFFFFFF078069FFFFFFFFFFFF // Carreguem en el buffer intern el valor del bloc 7 que equival al trailer bloc del sector 1
lka 1 A0A1A2A3A4A5 // Carreguem el valor de la clau de lectura/escriptura del sector 1
write card
write trailer
Aproximem la targeta per a fer l’escriptura.

Exemple 2
Volem clonar completament una targeta RFID incloent el bloc 0:

lka 0  A0A1A2A3A4A5 // carreguem les claus de lectura
lka 1  A0A1A2A3A4A5
...
lka 15  A0A1A2A3A4A5

read card  //llegim la targeta original
clear keys // establim les claus A a FFFFFFFFFFFF
write clone // clonem la targeta

Comentaris