Passa al contingut principal

Reparar una tarjeta RFID Mifare Classic 1K brickejada

Una de les accions més frustrants quan s’escriu una targeta RFID és bloquejar-la, per exemple al sobreescriure el bloc de cua o bloc trailer amb valors incoherents.

Una targeta Mifare Classic de 1KB té 16 sectors de 4 blocs amb 16 bytes per bloc (64 blocs a 16 bytes).

El bloc «trailer» és l’ultim bloc de cada sector, de forma que del 1KB de capacitat hem de restar-li 16 bytes del primer bloc (on està el identificador) i els 16 blocs de cua (blocs 3,7,11,15... 59, i 63).

En aquest bloc és on estan guardades les claus A i B d’accés a la resta de blocs del sector així com els bits d’accés.

Bàsicament ens diu què es pot llegir i què es pot escriure i quina serà la contrasenya per a fer-ho.

Així que la capacitat real és: (64 blocs – 16 trailer – 1 capçalera)*16bytes = 752 bytes útils.

0 E9D517B49F0804006263646566676869
1 00000000000000000000000000000000
2 00000000000000000000000000000000
3 FFFFFFFFFFFFFF078069FFFFFFFFFFFF ← bloc trailer
4 00000000000000000000000000000000
5 00000000000000000000000000000000
6 00000000000000000000000000000000
7 FFFFFFFFFFFFFF078069FFFFFFFFFFFF ← bloc trailer
...
60 00000000000000000000000000000000
61 00000000000000000000000000000000
62 00000000000000000000000000000000
63 FFFFFFFFFFFFFF078069FFFFFFFFFFFF ← bloc trailer


Així que quan escrivim el bloc "trailer"  amb un valor incoherent (especialment en els bits d’accés) ja podem donar per perdut tot el sector i per tant acabem de convertir la nostra magnífica targeta RFID en un tros de plàstic inservible.

No hi ha forma humana de recuperar-ho... o si...

Existeix un tipus de targetes RFID amb el UID intercanviable o també anomenades «magic cards» o «chinese RFID cards» que sovint son utilitzades per a fer una còpia idèntica d’altra targeta, incloent l'identificador (bloc 0).

Exteriorment són idèntiques però tenen la peculiaritat de que amb una sèrie d’ordres per part del lector/gravador s’habilita un mode privilegiat amb accés total.

Tindrem doncs accés a TOTS els blocs independentment si es té o no les claus d’accés al sector en qüestió i per tant els podrem sobreescriure, per exemple el bloc zero que és on es troba el UID.



Dit d’altra forma en aquest mode està permesa l’escriptura qualsevol bloc, incloent el bloc zero que és on es troba el identificador de la targeta UID.

Així que si la nostra targeta és d’aquest tipus no està tot perdut, podrem escriure el bloc zero o els blocs trailer amb els valors adequats per a la seua recuperació.

Que és el que necessitem:

  • La targeta a recuperar (de moment sols suporta la Mifare Classic de 1k). Si la nostra targeta no és «màgica» aquest procediment no funcionarà.
  • Wemos D1 mini (basat amb el ESP8266), arduino o equivalent.
  • Un lector/gravador mfrc522 i els cables de connexió.
  • El programari mfrc522cli.

Aquest programa permet la reparació del bloc zero però també restaurar els blocs "trailer" dels 16 sectors que té una targeta Mifare Classic 1k a un valor adequat per a la seua reutilització:

«FFFFFFFFFFFFFF078069FFFFFFFFFFFF»
Amb aquest valor es quedaran les claus d’accés A i B per a tots els blocs  «FFFFFFFFFFFF»
El procediment és molt senzill.

Una vegada tenim carregat el sketch en la nostra variant d’Arduino i connectat correctament el MFRC522 tal i com es mostra en la següent imatge:

S’han d’executar pel port serie de l’editor de l’Arduino:

fix start
fix trailer 
Aproximem la targeta i en 1 o 2 segons ens apareixerà el missatge de «OK»

Ara ja podem parar el procés de reparació amb un:
fix stop

en cas contrari realitzarà el mateix procés cada vegada que s’aproxime una targeta al lector/gravador.

Amb tot això ja tindrem la targeta reparada.

Comentaris