Copia el mensaje, no el volcado: copias de etiquetas NFC más seguras
Copiar el mensaje NDEF deja el mismo contenido en una etiqueta nueva sin arrastrar los bytes de bloqueo ni las contraseñas. Así se hace con etiquetas que son tuyas.
Cuando copies una etiqueta NFC que es tuya, copia su mensaje NDEF y no un volcado de memoria en bruto. El mensaje es el contenido que de verdad te interesa: el enlace, el texto, la tarjeta de contacto o el registro de Wi-Fi. Un volcado, además, arrastra partes del chip que nunca estuvieron pensadas para moverse.
Respuesta rápida
Un mensaje NDEF vive en la memoria de usuario de la etiqueta. Un volcado en bruto son todas las páginas del chip, y eso incluye el UID, los bytes de bloqueo, el contenedor de capacidades y la configuración de contraseña.
Toma una NTAG213. Tiene 180 bytes en 45 páginas de 4 bytes, pero solo 144 bytes son memoria de usuario. El UID de 7 bytes se programa en fábrica y es de solo lectura. Los bytes de bloqueo y el contenedor de capacidades son de programación única (OTP). Así que un volcado casi no es tu contenido, y parte de él no se puede deshacer una vez escrito.
Esta guía trata de etiquetas que son tuyas o que controlas: tus pegatinas de tarjeta de visita, tus etiquetas de Wi-Fi, tus disparadores de domótica. No cubre credenciales de acceso, tarjetas de transporte, tarjetas de pago ni llaves de hotel, y tampoco te ayudará con ellas. Si solo quieres editar una etiqueta que ya escribiste, lee mejor cómo cambiar una etiqueta después de escribirla.
Paso a paso
1. Escanea tu etiqueta y lee el mensaje
Acerca el móvil a la etiqueta y léela como NDEF. Quieres los registros, no las páginas. Según la documentación de Android, un mensaje NDEF contiene uno o más registros, y cada registro tiene un formato de nombre de tipo, un tipo, un ID opcional y una carga útil.
2. Compara el tamaño con la etiqueta de destino
Cuenta los bytes del mensaje y compáralos con la capacidad de la etiqueta en blanco. Una NTAG213 tiene 144 bytes de memoria de usuario. Una NTAG215 tiene 504 bytes, en las páginas 4 a 129. Un mensaje que venga de una NTAG215 puede no caber en una NTAG213. En sentido contrario no hay problema.
3. Escribe todos los registros, no solo el primero
Un mensaje puede contener varios registros, y la documentación de Android avisa de que no des por hecho que toda la carga útil está en el primero. Algunas etiquetas llevan también un Android Application Record, que puede estar en cualquier registro del mensaje. Copia el mensaje completo y en orden.
4. Vuelve a leer la copia y compara
Escanea la etiqueta nueva y comprueba que los registros coinciden con los del original: mismos tipos, mismas cargas útiles, mismo orden. Hazlo antes de pegarla en ningún sitio. Bloquea la etiqueta solo cuando estés conforme, porque el bloqueo es permanente.
Problemas habituales y cómo resolverlos
La copia es de solo lectura. Los bytes de bloqueo de NTAG213 y NTAG215 son de programación única y pueden dejar la memoria en solo lectura de forma permanente, algo que no se puede revertir. Si una copia por páginas llevó bits de bloqueo a tu etiqueta en blanco, has perdido una etiqueta regrabable para siempre. Es la razón principal para evitar los volcados. Para saber en qué estado está una etiqueta, comprueba si una etiqueta está bloqueada antes de escribir en ella.
Se coló una contraseña. Las páginas de configuración de la NTAG215 (de la 131 a la 134) guardan AUTH0, ACCESS, una contraseña de 32 bits y un PACK de 16 bits. Una contraseña puede restringir la escritura desde la página que indica AUTH0. Copia esas páginas a una etiqueta nueva y podrías acabar con algo que ya no puedes editar. Una copia solo del mensaje deja la configuración con sus valores por defecto.
La escritura falla. Puede que el mensaje sea demasiado grande o que la etiqueta ya esté bloqueada. Nuestras notas sobre errores de escritura de solo lectura y etiqueta perdida explican cómo distinguir ambos casos.
El UID es distinto. Lo será. El UID es de solo lectura en los dos chips, así que una copia del mensaje es una etiqueta nueva con su propia identidad. Si algo que has montado depende de un UID concreto, una copia del mensaje no lo cumplirá.
Cómo hacerlo en NFCore
En NFCore, escanea la etiqueta que es tuya, guarda su mensaje, acerca una etiqueta en blanco al móvil y escríbelo. Comprueba antes el tamaño si pasas de un chip grande a uno más pequeño. NFCore no pide cuenta y no sube nada a la nube.
Puedes conseguir NFCore en la App Store o en Google Play. iOS y Android difieren en lo que pueden leer y escribir en una etiqueta, así que prueba con el móvil que vayas a usar.
Preguntas frecuentes
¿Puedo copiar el UID de una etiqueta NFC en otra?
No, no con etiquetas normales. El UID de 7 bytes de una NTAG213 o una NTAG215 se programa en fábrica y es de solo lectura. Al copiar el mensaje obtienes el mismo contenido en una etiqueta con su propio UID.
¿Puedo copiar un mensaje de una NTAG215 en una NTAG213?
Solo si el mensaje cabe en 144 bytes. Una NTAG215 tiene 504 bytes de memoria de usuario, así que comprueba el tamaño del mensaje antes de escribir.
¿Por qué mi copia quedó de solo lectura?
Los bytes de bloqueo son de programación única. Una copia por páginas que los llevó consigo puede dejar la etiqueta nueva en solo lectura de forma permanente, y por eso aconsejamos copiar el mensaje.