Algo sobre tarjetas RFID

Roni Bandini
9 min readAug 6, 2024

--

Dispositivos para RFID

RFID es un acrónimo de Radio Frequency Identification. Esta tecnología fue desarrollada por el MIT y está formado por dos componentes fundamentales: tags y lectores/escritores.

“El propósito fundamental de la tecnología RFID es transmitir la identidad de un objeto (similar a un número de serie único) mediante ondas de radio”

Las tarjetas RFID suelen utilizarse para control de acceso a domicilios, oficinas y organismos varios ya que permiten dejar un registro de los ingresos, administrar permisos para ciertos sectores y son económicas comparadas con las llaves tradicionales. A modo de referencia cada tarjeta estándar cuesta u$0.50 y cada tag regrabable cuesta u$2 en Argentina.

Los tags más comunes y económicos son pasivos en tanto la corriente de la micro bobina de la tarjeta es inducida por el lector activando el chip, pero también hay activos.

En los últimos años trabajé en algunos proyectos privados con RFID y publiqué también prototipos como el Expendedor de Guaymallen Caviar con esterilización, pero quería publicar mis notas por si le llegan a servir a otros makers.

Frecuencias y protocolos

Si bien hay tarjetas de ultra alta frecuencia las más comunes son lf y hf.

Baja Frecuencia (LF) 134 kHz tipo chip T5577 y protocolo EM4100

Alta Frecuencia (HF) 13.56 MHz tipo Mifare Classic con protocolo Mifare

Mifare Classic

La tarjeta MIFARE Classic de 1K tiene 1,024 bytes de almacenamiento, divididos en 16 sectores; cada sector protegido por dos claves, llamadas A y B. Cada clave puede ser programada para permitir operaciones como lectura, escritura e incrementar valores de los bloques. La proxmark graba las tarjetas que vienen rotuladas como M14B La MIFARE Classic usa un protocolo de seguridad NXP (Crypto-1) que fue vulnerado.

Para recuperar los keys de la tarjeta se usa el comando:

hf mf autopwn

La tarjeta tiene 16 sectores. El sector 1 por ejemplo incluye los bloques 4 al 7, el sector 2 los bloques 8 al 11. En cada sector se pueden grabar 64 caracteres ASCII

Para leer se indica el sector y la clave:

hf mf rdsc [Sector number][Key A/B] [12 Hex Key]

Ejemplo para leer los 4 bloques del sector 1: hf mf rdsc 001 a FFFFFFFFFFFF

— sector no 1, key A — FF FF FF FF FF FF

isOk:01
4 | 48 6F 6C 61 53 6F 79 52 6F 6E 69 30 30 30 30 30
5 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
6 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
7 | 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF

Para escribir en el bloque 5 del sector 1 con la cadena ASCII “HolaMundo…….”:

hf mf wrbl — blk 0 -k FFFFFFFFFFFF -d d3a2859f6b880400c801002000000016

Vovliendo a leer, ahora se muestra el sector 5 actualizado:

4 | 48 6F 6C 61 53 6F 79 52 6F 6E 69 30 30 30 30 30
5 | 48 6F 6C 61 4D 75 6E 64 6F 2E 2E 2E 2E 2E 2E 2E
6 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
7 | 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF

Importante: no escribir el cuarto bloque de cada sector ya que es el sector trailer. En el bloque 1 es el sector 7. En el bloque 2 es el 11, etc

Para hacer un dump:

hf mf dump

La SUBE por ejemplo es una MIFARE Classic 1k M1 S50 UID de 4 bytes

HID Prox

La HID prox es una LF que se usa en muchos controles de acceso de Argentina. Usa chipset EM4x05 / EM4x69

Jaula de faraday

Para evitar que una tarjeta sea leída sin consentimiento, suele bastar con cubrir la tarjeta con papel aluminio.

iCopy-X por línea de comandos con PC mode

Arduino y RFID

Se consiguen lectores de tarjetas RFID como el RFID-RC522 para hf Mifare que se conectan a un Arduino con 7 jumper cables y permiten la administración con esta librería https://github.com/miguelbalboa/rfid

RC522 para tarjetas Mifare

Sin embargo existen distintos fabricantes y cada placa puede funcionar distinto.

Por su parte la placa Rdm6300 sirve para lectura de tags 125khz.

Cloners chinos Zonsin, etc

Cloner chino Zonsin

Este tipo de cloners permiten escenar, leer, clonar y grabar arbitrariamente UID. Es preciso notar que tienen botonera decimal y muestran los card numbers en el mismo formato. Esto genera confusiones, ya que por ejemplo, la tarjeta lf t5577 con ID hexadecimal 99999 aparece como 0010066329. Con cualquier conversor decimal a hexa es posible obtener el ID asignado: 999999

Cómo grabar datos en una tarjeta lf de 125khz con chip T5577

Las tarjetas de 125khz con chip T5577 permiten grabar datos del usuario en 6 bloques (1 al 6)

[+]  01 | 00000000 | 00000000000000000000000000000000 | ....
[+] 02 | 00000000 | 00000000000000000000000000000000 | ....
[+] 03 | 00000000 | 00000000000000000000000000000000 | ....
[+] 04 | 00000000 | 00000000000000000000000000000000 | ....
[+] 05 | 00000000 | 00000000000000000000000000000000 | ....
[+] 06 | 00000000 | 00000000000000000000000000000000 | ....

Para setear password el bloque 0 debe tener este contenido 000880E0 Luego el password se indica en el bloque 7 del page 0. Los comandos qie siguen son de Proxmark.

lf t55xx write -b 7 -d 12345678

Con este otro comando indicamos que la tarjeta va a usar password

lf t55xx write -b 0 -d 000880F0

De ahora en más para detectar esta tarjeta hace falta indicar el password seteado

lf t55 detect -p 12345678

Escribir con password

lf t55xx write -b 1 -d 1234abcd -p 12345678

Leer con password

lf t55xx read -b 1 -p 12345678 -o

Cómo modificar el UID de una tarjeta RFID

El UID es la identificación de la tarjeta. De acuerdo a los fabricantes es único y no grabable por los usuarios. Sin embargo con ciertas tarjetas “mágicas” es posible clonar, emular tags y asignar UID arbitrariamente. De esto se deduce que un sistema cuya autenticación está basada únicamente en UID podría ser vulnerado.

Dispositivo iCopy-X escribiendo tarjeta Mifare

Existen muchos dispositivos para tal fin. El Flipper Zero y el cloner Zonsin por ejemplo. Luego está el Icopy-X, un dispositivo autónomo basado en Proxmark que permite clonar, emular, diagnosticar, borrar tags y tiene muchas otras funciones. Viene con un set de tarjetas ID1 y M1–4b L1 a L4. Asimismo tiene un PC Mode que permite acceder a funciones adicionales a través de la línea de comandos.

Para usar Icopy-X por línea de comandos es necesario conectar el dispositivo por cable USB. La computadora detectará una unidad externa. Hay que ir a Device Manager para ver el puerto asignado, hacer click en Run.bat e indicar el port USB.

Obteniendo la clave de una Mifare con darkside

Luego es posible leer la tarjeta con auto

auto

[/] Searching for ISO14443-A tag…
[+] UID: 12 34 56 78
[+] ATQA: 00 04
[+] SAK: 08 [2]
[+] Possible types:
[+] MIFARE Classic 1K / Classic 1K CL2
[+] MIFARE Plus 2K / Plus EV1 2K
[+] MIFARE Plus CL2 2K / Plus CL2 EV1 2K
[=] proprietary non iso14443–4 card found, RATS not supported
[+] Magic capabilities : Gen 1a
[+] Prng detection: weak

Con la línea de comandos es posible grabar UID arbitrariamente, es decir, sin haber leído una tarjeta previamente.

Dependiendo de si la tarjeta es lf o hf, los métodos para grabar son diferentes.

En ocasiones el comando de escritura es correcto, pero el UID no se modifica en la tarjeta. En estos casos conviene realizar un Erase Card desde el menu del iCopy.

Lista de comandos del iCopy-X — Proxmark

help

analyse { Analyse utils… }
data { Plot window / data buffer manipulation… }
emv { EMV ISO-14443 / ISO-7816… }
hf { High frequency commands… }
hw { Hardware commands… }
lf { Low frequency commands… }
mem { Flash Memory manipulation… }
reveng { CRC calculations from RevEng software }
smart { Smart card ISO-7816 commands… }
script { Scripting commands }
trace { Trace manipulation… }
wiegand { Wiegand format manipulation… }

— — — — — — — — — — — — — — — — General — — — — — — — — — — — -

auto Automated detection process for unknown tags
clear clear screen
help This help. Use ‘<command> help’ for details of a particular command.
hints Turn hints on / off
msleep Add a pause in milliseconds
pref Edit preferences
rem Add a text line in log file
quit
exit Exit program

Los comandos disponibles para Mifare son

— — — — — — — — — — — — — — — — — — recovery — — — — — — — — — — — -

darkside Darkside attack
nested Nested attack
hardnested Nested attack for hardened MIFARE Classic cards
staticnested Nested attack against static nonce MIFARE Classic cards
autopwn Automatic key recovery tool for MIFARE Classic
nack Test for MIFARE NACK bug
chk Check keys
fchk Check keys fast, targets all keys on card
decrypt [nt] [ar_enc] [at_enc] [data] — to decrypt sniff or trace

— — — — — — — — — — — — — — — — — — operations — — — — — — — — — — — -

auth4 ISO14443–4 AES authentication
dump Dump MIFARE Classic tag to binary file
mad Checks and prints MAD
ndef Prints NDEF records from card
personalize Personalize UID (MIFARE Classic EV1 only)
rdbl Read MIFARE Classic block
rdsc Read MIFARE Classic sector
restore Restore MIFARE Classic binary file to BLANK tag
setmod Set MIFARE Classic EV1 load modulation strength
wrbl Write MIFARE Classic block

— — — — — — — — — — — — — — — — — — simulation — — — — — — — — — — — -

sim Simulate MIFARE card
ecfill Fill simulator memory with help of keys from simulator
eclr Clear simulator memory
egetblk Get simulator memory block
egetsc Get simulator memory sector
ekeyprn Print keys from simulator memory
eload Load from file emul dump
esave Save to file emul dump
eset Set simulator memory block
eview View emul memory

— — — — — — — — — — — — — — — — — — magic — — — — — — — — — — — -

cgetblk Read block
cgetsc Read sector
cload Load dump
csave Save dump from card into file or emulator
csetblk Write block
csetuid Set UID
cview view card
cwipe Wipe card to default UID/Sectors/Keys

— — — — — — — — — — — — — — — — — — magic gen3 — — — — — — — — — — — -

gen3uid Set UID without manufacturer block
gen3blk Overwrite full manufacturer block
gen3freeze Perma lock further UID changes

— — — — — — — — — — — — — — — — — — i — — — — — — — — — — — -

ice collect MIFARE Classic nonces to file

Antena lf de largo alcance

Antena W26 con placa ESP32-RFID-Tool

La W26 es una antena de largo alcance. Permite activar y leer tarjetas lf 125 a unos 45cm de distancia. Es posible conectar esta antena a una placa ESP-RFID-Tool y registrar las lecturas en un log. La placa ESP32-RFID monta un web server para acceder a las lecturas.

Panel del ESP-RFID-Tool 1.2.1

Un problema que aparece al usar RFID-Tool es que las lecturas no coinciden con los UID de las tarjetas. Esto se debe a que el binario contiene 1 bit inicial y 1 bit final que deben ser removidos. Tras remover estos bits y realizar la conversión a hexadecimal, el UID es el correcto.

Log de tarjetas

Cómo integrar las lecturas de tarjetas a distancia con algún sistema de cloning

Ejemplo de consola para el programa de descarga

Para integrar las lecturas con un sistema de escritura en masa es posible desarrollar un programa que se conecte vía WiFi a la placa, descargue el log, realice las correcciones sobre el binario y genere los comandos de escritura con Proxmark.

Por cotización para proyectos de RFID

Por cotización de proyectos RFID comunicarse por privado

https://www.instagram.com/ronibandini/

https://x.com/RoniBandini

Charla de Contracultura Maker en Nerdearla

--

--

Roni Bandini
Roni Bandini

Written by Roni Bandini

Contracultura maker 🛠️ Artes electrónicas 💡Inteligencia Artificial: LLM y Machine Learning 🚀 Embedded System developer

No responses yet