Esta vez el post no trata de realizar una reparación sino de copiar estas famosas llames que encontramos por todos lados.
Estas Smarth Tag de reducido tamaño no necesitan de una alimentación externa y eso las a llevado a
ser utilizada en muchos sectores. Control de accesos, configuración de teléfonos, pagos en establecimiento...
ser utilizada en muchos sectores. Control de accesos, configuración de teléfonos, pagos en establecimiento...
Además según el fabricante son "imposible de copiar", pero en la práctica veremos que no es así.
Hace unos días se me presento una situación con estas llaves. Las piscinas y pistas de mi comunidad funcionan con un sistema que utiliza este dispositivo. El caso fue que perdí una y fui a la comunidad de vecinos a pedir una de repuesto, pero quisieron cobrarme 20€ por la llave, que no vale más de 30 céntimos por Internet. Así que me puse a indagar por Internet como funcionaban, como almacenaban la memoria. Todo el mundo preguntaba lo mismo, como clonar una llave pero ninguno lo conseguía con éxito, siempre acababan estropeando la llave.
Existen aplicaciones para Android que dicen que son capaces de clonarlas como:
- TAGINFO
- MFCLASSIC
- NFC CLONER
Estas son algunas de ellas, pero hay muchas más. La verdad es que todas leen la UID de la llave y los bloques de memoria, pero no son capaces de clonarlas. Después de todo el proceso de investigación mi amigo Arduino me dio la solución, por tan solo los 30 céntimos que cuesta la llave. Ya que el resto de herramientas las tenia ya por casa.
Me fue de gran ayuda este Tutorial del Señor Giltesa que podéis repasar aqui antes de seguir con este post, el cual además me dios los pasos para investigar.
Para empezar con el proceso vamos a conocer un poco el funcionamiento de las Smart Tag.Tambien conocidas como Mifare:
MIFARE es una tecnología de tarjetas inteligentes
sin contacto (TISC), de las más ampliamente instaladas en el mundo, con
aproximadamente 250 millones de TISC y 1,5 millones de módulos lectores
vendidos. Es equivalente a las 3 primeras partes de la norma ISO 14443 Tipo A de 13.56 MHz
con protocolo de alto nivel, con una distancia típica de lectura de
10 cm (unas 4 pulgadas). La distancia de lectura depende de la potencia
del módulo lector, existiendo lectores de mayor y menor alcance. Es
propiedad de NXP Semiconductores (antes parte de Philips
Semiconductores).
Podéis seguir leyendo más en la Wikipedia pinchando aquí. Esto os ayudará a entender como funciona.
Las llaves que nosotros vamos a clonar son:
MIFARE Classic. Son fundamentalmente de los dispositivos de almacenamiento de memoria más extendidos en el mundo. Existen tarjetas de 1KB
y de 4KB. La MIFARE Standard de 1KB ofrece unos 768 bytes de
almacenamiento de datos, dividida en 16 sectores. La MIFARE Standard de
4k ofrece 3 KB dividido en 64 sectores.
Una vez visto todo esto vamos a detallar todo lo que necesitamos para el copiado de las Tags:
* Pasos a seguir desde cero para todos aquellos que no tengan ni idea aun de lo que es Arduino.
1º Paso:
como el programa que te ayudará a controlar y cargar los datos en tu Arduino.
2º Paso:
Instala el archivo descargado en tu ordenador. Si es Windows, sigue estos pasos.
Para Linux estos y para OS estos. (para los que uséis Mac, ya sabréis que están simple como arrastrar y listo
3º Paso:
Descarga la libreria para la Shield con chip PN532 e instala la en tu ordenador. Os dejo el enlace de descarga de la modificada por el Señor Giltesa la cual esta muy completa.
4º Paso:
Lo siguiente que vamos a hacer es conectar la placa Arduino Uno y la Shield con sistema RFID.
Como en la foto.
Conectarla al ordenador mediante el cable USB.
5º Paso:
Abre el ejemplo "ReadAllMemoryBlocks". Ahora vamos a cargar en nuestra placa Arduino. Para ello primero seleccionamos el tipo de placa que tenemos en el menú de arriba en la pestaña de Herramientas/placa/ Arduino Uno.
Automáticamente nos reconocerá que esta conectada mediante USB. Así que ahora apretamos el botón de Carga y esperamos a que finalice.
Una vez hecho esto en la parte superior derecha encontraremos el símbolo de una lupa, que es el monitor Serial. Aquí es donde veremos los bloques de memoria de los que consta nuestra llave a copiar.
La acercamos al lector y esperamos a que nos muestre los 63 bloques de la llave. Después de esto ya podemos retirarla.
Os tiene que quedar algo parecido a la foto. con la diferencia que los número variaran en vuestras llaves con las mías.
Vamos a analizar la imagen. El primer bloque en la posición 00, es el Bloque de fábrica. Aquí el fabricante graba la UID de la llave (identificación única) en los 4 primeros byte, y el resto datos del fabricante y demás. La UID es algo único para cada llave y se graba al fabricarla, por este modo muchos sistemas de acceso utilizan solo estos códigos y no aprovechan el resto de memoria para nada.
Vamos a copiar este sector en un papel, y comprobar que el resto de posiciones no almacenan nada sino ceros. Solo los Sectores Trailer guardan datos, que son las claves de acceso a cada 3 bloques de memoria. Podemos comprobar que a partir de la 10ª posición todo lo que pone es FF FF FF FF FF FF, esta es la clave de acceso a los bloques. Si modificamos los Sectores Trailer, perderemos la memoria de la llave y solo servirá para leer la UID.
6º Paso:
Vamos a modificar la parte donde escribe en las 16 posiciones de memoria números del 0 al 15 en Hexadecimal.
Y también modificaremos el bloque en el que queremos escribir, ya que nosotros queremos copiar el bloque que viene grabado de fábrica.
Debemos modificar el ejemplo exactamente como este que podeis ver en la imagen. La única diferencia con vuestra llave serán nos números en hexadecimal que vosotros habeis copiado en el paso anterior.
Cambiarlos por los que habeis copiado en el papel. Se debe cambiar a partir de "0x" ya que esto le dice al arduino que es un código en Hexacedimal. Por lo demás debe quedar tal cual a la foto.
Por último teneis que cambiar la posición del bloque donde debe copiar el código, eso lo encontrais en la linea que pone "if(nfc.readMemoryBlock(1,0x00,block))" vosotros tendreis otra posición pero debeis cambiar la por esta que aparece en la foto.
Por último compilamos el programa y lo cargamos en arduino, no nos tiene que dar nigún fallo. Si se diera el caso, debemos revisar todas las lineas y ver que son iguales a las de la foto. Ahora cogemos una NFC regrabable de las que hemos comprado por internet, abrimos el Monitor Serial y pasamos la llave por encima del lector/grabador.
En la pantalla del Serial veremos que ha grabado con exito el bloque de memoria y os lo leerá correctamente con el código que nosotros hemos grabado.
Por último nos queda probar la llave en la puerta de garaje o piscina. Yo no tube mayor problema, lo que más me costo fue encontrar un proveedor que me vendiera este tipo de llaves en las que puedes modificar el bloque de fábrica.
Saludos y espero que o sirva de ayuda.
































