Decodificador NDEF Hex: Comprende Cada Byte de tu Payload de Tag NFC
1¿Qué es NDEF y por Qué Necesitas un Decodificador?
NDEF —NFC Data Exchange Format— es el formato de datos binarios definido por el NFC Forum para almacenar e intercambiar información entre dispositivos NFC y tags. Es el lenguaje universal que hablan los tags NFC, los smartphones y los lectores NFC de todo el mundo. Comprender NDEF es esencial para cualquier desarrollador, integrador o usuario técnico que trabaje con tecnología NFC. Cuando lees un tag NFC con una app como NFC Tools, la app te muestra el contenido legible (una URL, un texto, una vCard). Pero detrás de eso, el tag almacena datos binarios brutos: una secuencia de bytes con una estructura muy específica definida por la especificación NDEF. Esta herramienta te permite ir entre bastidores: pega la representación hexadecimal bruta de cualquier mensaje NDEF y ve exactamente cómo está estructurado, registro a registro, campo a campo. Esto es invaluable para depurar integraciones NFC. Quizás un tag no se lee correctamente en un dispositivo concreto. Quizás quieres verificar que un tag programado contiene exactamente el payload correcto. Quizás estás haciendo ingeniería inversa de un tag NFC propietario para entender su estructura. O quizás estás aprendiendo el formato NDEF y quieres ver cómo se codifican en binario los distintos tipos de registro. Este decodificador hace todo eso al instante, de forma gratuita y sin instalar nada.
2Cómo Funciona el Decodificador NDEF: Análisis de la Estructura Binaria
El decodificador procesa la entrada hexadecimal analizando la estructura del mensaje NDEF byte a byte, siguiendo la Especificación Técnica NDEF del NFC Forum. Paso 1 — Análisis de bytes: La cadena hex se convierte en un array de bytes. Cada par de caracteres hex se convierte en un byte (p.ej. 'd1' = 0xD1 = 209 en decimal). Paso 2 — Análisis de la cabecera del registro: El primer byte de cada registro es el byte de cabecera. Sus bits codifican varios indicadores: MB (bit 7) = Message Begin, activo en el primer registro. ME (bit 6) = Message End, activo en el último registro. CF (bit 5) = Chunk Flag, para registros fragmentados (poco frecuente). SR (bit 4) = Short Record, si está activo la longitud del payload es 1 byte; si no, 4 bytes. IL (bit 3) = ID Length presente. TNF (bits 2-0) = Type Name Format, valores 0-7 que definen la familia del tipo de registro. Paso 3 — Extracción de campos: Tras la cabecera, el decodificador lee la longitud del tipo, la longitud del payload (1 o 4 bytes según el indicador SR) y la longitud de ID opcional. A continuación, lee el campo de tipo, el campo de ID opcional y finalmente el payload. Paso 4 — Interpretación del tipo: Según el TNF y el tipo, el decodificador interpreta el payload. Para TNF=1 (Well-Known) con tipo 'U', decodifica el URI. Para tipo 'T', decodifica el código de idioma y el texto. Para TNF=2 (MIME), muestra el tipo MIME. Todos los campos se muestran con sus representaciones hex y ASCII.
3¿Cuándo Necesitas un Decodificador NDEF? Casos de Uso Prácticos
Los desarrolladores y usuarios técnicos de NFC recurren a un decodificador NDEF en múltiples situaciones. Depuración de programación de tags NFC: Programaste un tag con tu app pero no se comporta como se esperaba en algunos dispositivos. Copia el volcado hex de NFC Tools (Android) usando la función 'Compartir datos brutos', pégalo aquí y comprueba inmediatamente si la estructura NDEF es correcta. Los problemas habituales incluyen valores TNF incorrectos, bytes de longitud de payload erróneos o indicadores de Message Begin/End ausentes. Verificación del contenido del tag antes del despliegue: Antes de enviar 10.000 tags NFC preprogramados a un cliente, verifica que la estructura del payload coincide con la especificación. Esto es crítico en despliegues NFC industriales donde los tags son leídos por lectores de hardware personalizados que pueden ser estrictos con el cumplimiento del formato. Ingeniería inversa de tags propietarios: Algunos dispositivos usan tags NFC con contenido no estándar o propietario. El decodificador muestra los bytes brutos, TNF, tipo y payload de cada registro, ayudándote a entender el formato incluso cuando el proveedor no proporciona documentación. Aprendizaje de la estructura NDEF: Los estudiantes y desarrolladores que aprenden tecnología NFC pueden usar esta herramienta para estudiar cómo se codifican los distintos tipos de registro. Genera un payload de URL con el Generador de URL y pégalo aquí para ver exactamente cómo están estructurados los bytes. Prueba de aplicaciones de lectura NFC: Los ingenieros de QA que prueban apps de lectura NFC pueden usar payloads NDEF hex conocidos como vectores de prueba, verificando que su app analiza correctamente cada tipo de registro.
4Análisis en Profundidad del Formato NDEF: Valores TNF y Tipos de Registro
El campo Type Name Format (TNF) es la clave para comprender qué tipo de datos contiene un registro NDEF. Existen 8 valores TNF posibles: TNF 0x00 — Vacío: Sin tipo, sin payload. Se usa como marcador de posición en registros fragmentados o mensajes NDEF vacíos. TNF 0x01 — Well-Known: El tipo más común. Usa nombres de tipo cortos definidos por las especificaciones RTD del NFC Forum: 'U' para URI, 'T' para Texto, 'Sp' para SmartPoster, 'act' para Acción, 'hs' para Handover Select, 'hr' para Handover Request. TNF 0x02 — MIME Media: El campo de tipo contiene una cadena de tipo MIME (p.ej. 'text/vcard', 'application/vnd.wfa.wsc'). Usado para vCards, credenciales WiFi y cualquier dato con un tipo MIME estándar. TNF 0x03 — URI Absoluta: El campo de tipo contiene una cadena URI completa que identifica el tipo de registro. Usado en algunas aplicaciones NFC empresariales. TNF 0x04 — Tipo Externo: El tipo es una cadena definida por el usuario en el formato 'dominio.com:nombre'. Usado para tipos de registro específicos de aplicación. TNF 0x05 — Desconocido: El tipo es desconocido o no aplicable. La longitud del tipo debe ser 0. TNF 0x06 — Sin cambios: Usado solo en registros fragmentados (CF=1) para indicar que los registros de continuación tienen el mismo tipo que el primer fragmento. TNF 0x07 — Reservado: Reservado por el NFC Forum para uso futuro. No debería aparecer en implementaciones actuales. Para los registros URI Well-Known, el primer byte del payload es el código identificador de URI, que indica el prefijo de la URL.
5Cómo Obtener un Volcado Hex NDEF de tus Tags NFC
Para usar el decodificador NDEF, primero necesitas obtener el payload hex bruto de un tag NFC físico. Estos son los métodos más comunes: Usando NFC Tools (Android e iOS): Abre NFC Tools, ve a la pestaña 'Leer' y acerca el teléfono al tag NFC. Tras la lectura, toca el registro que quieres inspeccionar y busca la opción 'Compartir' o 'Datos brutos'. Algunas versiones muestran el hex directamente en la vista de detalles del registro. Usando NFC TagInfo de NXP (Android): Es la app de diagnóstico NFC más detallada disponible. Tras escanear un tag, muestra el mensaje NDEF completo en hexadecimal en la pestaña NDEF. También muestra el tipo de chip, el mapa de memoria y los sectores bloqueados o protegidos. Usando la API NFC de Android: Si estás desarrollando una app Android, lee el contenido NDEF del tag usando el método NdefMessage.toByteArray() y conviértelo a hex con un utilitario estándar. Registra el resultado para depuración. Usando la Web NFC API: En Chrome para Android, usa la API NDEFReader. El array message.records te da cada registro, y puedes acceder a record.data como ArrayBuffer para extraer los bytes brutos. Usando un lector NFC USB: Conecta un lector NFC USB (como ACR122U o ACR1252U) a un ordenador y usa el SDK del lector o herramientas como nfcpy (Python) o libnfc para volcar el contenido del tag y pegar el hex aquí para su análisis. Payloads NDEF de muestra para pruebas: Registro URI para example.com: d1010e5503example.com en hex ASCII. Registro de texto 'Hello' en inglés: d1010b5402656e48656c6c6f
FAQPreguntas Frecuentes
¿Qué significa TNF en un registro NDEF?
TNF son las siglas de Type Name Format. Es un campo de 3 bits en la cabecera del registro NDEF que indica al lector cómo interpretar el campo 'tipo' del registro. Los valores más comunes son: 0x01 (Well-Known, usado para tipos estándar del NFC Forum como URI y Texto), 0x02 (MIME Media Type, usado para vCards y WiFi) y 0x04 (External Type, usado para datos específicos de aplicación). El valor TNF determina cómo la pila NFC del smartphone analizará el registro y lo enviará a la app correspondiente.
¿Por qué el payload decodificado parece caracteres aleatorios?
Si la representación ASCII del payload muestra caracteres no imprimibles o símbolos, significa que el payload contiene datos binarios que no son texto plano: esto es normal para muchos tipos de registro NDEF. Por ejemplo, los datos de vCard usan ASCII imprimible, pero algunos tipos de registro propietarios almacenan datos codificados en binario. La vista hexadecimal es siempre precisa independientemente del contenido. Los puntos (.) en la vista ASCII representan bytes por debajo de 32 o por encima de 126 que no son caracteres ASCII imprimibles.
¿Puedo decodificar datos NDEF de un tag Mifare Classic?
Los tags Mifare Classic usan una organización de memoria diferente a los tags NDEF nativos como los NTAG21x. Mifare Classic puede almacenar datos NDEF, pero primero debe leerse con una herramienta que gestione la autenticación de Mifare Classic (Clave A/B). Una vez que tienes los bytes de datos brutos del área NDEF de un tag Mifare Classic (normalmente a partir del bloque 4, sector 1, tras el MAD), puedes pegar esos bytes aquí. Para el análisis completo de Mifare Classic, usa nuestra herramienta de Mapa de Memoria Mifare.