¿Cómo se escriben las páginas de configuración sin estropear la etiqueta?
Lee antes el mapa de memoria del chip, escribe cada página entera después de leerla, pon la contraseña antes del ajuste que activa la protección, y deja para el final los bits de un solo sentido. Después ejecuta la secuencia entera en una etiqueta que puedas permitirte perder.
El mapa pertenece al chip
Las páginas de configuración contienen los ajustes que enumera la página de la configuración: contraseña, condiciones de acceso, contadores, reflejo y bits de bloqueo. Ningún tipo del NFC Forum los define, así que sus posiciones cambian de un chip a otro. Un NTAG213 guarda sus bits de bloqueo dinámicos en la página 40 y su configuración en las páginas 41 a 44, según su ficha en wakdev.com; un NTAG215 usa las páginas 130 a 134, según la suya.
Un número de página vale por tanto para una sola referencia. El código identifica el chip antes de escribir, como describe la página de la identificación del chip desde el lado de quien compra, y se niega a ejecutar su secuencia en cualquier otro: la página 41 de un NTAG213 es memoria de usuario corriente en un NTAG215.
Una página se escribe entera
WRITE fija cuatro bytes a la vez, y la referencia de MifareUltralight documenta writePage() como escribir una página. Los bytes de configuración comparten páginas, así que cambiar uno de ellos quiere decir leer la página, cambiar ese byte, y escribir los cuatro de vuelta.
Vuelve a escribir lo que leíste en los bytes que no pretendes cambiar. Un byte escrito a cero porque el código no conocía su significado es un ajuste cambiado sin que nadie lo decidiera, y algunos ajustes no vuelven.
No todas las páginas devuelven lo que se escribió. La página que contiene la contraseña normalmente no es legible, como señala la página de la contraseña, así que el código guarda el valor que escribió en lugar de esperar leerlo de vuelta.
Un orden que no te deja fuera
Escribe la contraseña antes del ajuste que activa la protección. La página de la contraseña describe los dos pasos, la clave y su alcance; en el otro orden, la protección empieza con la contraseña que el chip tuviera antes, y las escrituras posteriores dentro del rango protegido necesitan esa.
Deja los ajustes de un solo sentido para el final. Los bits de bloqueo, un contador que no se puede desactivar una vez activado, y un bit que congela la configuración misma son permanentes en los chips que los tienen, como advierte la página de la configuración, y cada uno puesto pronto convierte un error más abajo en la secuencia en una etiqueta perdida.
Vuelve a leer cada página después de escribirla, salvo las que no son legibles, y para en la primera diferencia. Una secuencia que sigue tras una escritura fallida construye sobre un estado que nadie conoce.
Una etiqueta que perder primero
Ejecuta la secuencia completa en una etiqueta antes del lote, y después compruébala desde un segundo dispositivo que no tenga la contraseña: una escritura que sale bien ahí quiere decir que el alcance está mal, la prueba que recomienda la página de la contraseña. En la misma etiqueta, prueba también una contraseña equivocada donde el chip limite los intentos fallidos, ya que el límite entra en producción con todo lo demás.
Guarda esa etiqueta, etiquetada con la secuencia y la fecha. Es la referencia cuando un lote se comporta de otra manera, el mismo razonamiento que la etiqueta muerta que la página de la etiqueta corrompida propone conservar para probar un paso de comprobación.
Después escribe el lote con el mismo código, no con una variante suya. La página de la escritura en lote cubre el lado de la producción.
Preguntas frecuentes
¿La API NDEF puede escribir páginas de configuración?
No. La configuración está fuera del NDEF, así que hace falta comandos WRITE en bruto sobre las páginas que nombra la hoja de datos del chip.
¿Por qué mi escritura de configuración cayó en el contenido?
El número de página pertenecía a otro chip. La página 41 contiene configuración en un NTAG213 y memoria de usuario en un NTAG215.
¿Se puede deshacer una configuración equivocada?
Una contraseña se puede cambiar con la actual. Los bits de bloqueo y una configuración congelada no, en ningún chip que los tenga.
¿La contraseña va antes o después del ajuste de protección?
Antes. Si no, la protección empieza con la contraseña que el chip ya tenía, y las escrituras posteriores en el rango protegido necesitan esa.