Vai al contenuto
Lingua: IT

Come si scrivono le pagine di configurazione di un tag senza rovinarlo?

Leggi prima la mappa di memoria del chip, scrivi ogni pagina intera dopo averla letta, metti la password prima dell'impostazione che accende la protezione, e lascia per ultimo ogni bit a senso unico. Poi esegui tutta la sequenza su un tag che puoi permetterti di perdere, dato che nessuna API di piattaforma verifica quello che il codice ci scrive.

La mappa appartiene al chip

Le pagine di configurazione portano le impostazioni che la pagina della configurazione elenca: password, condizioni di accesso, contatori, rispecchiamento e bit di blocco. Nessun tipo del NFC Forum le definisce, quindi le loro posizioni cambiano da un chip all'altro. Un NTAG213 tiene i suoi byte di blocco dinamici nella pagina 40 e la sua configurazione nelle pagine da 41 a 44, secondo la sua scheda su wakdev.com; un NTAG215 usa le pagine da 130 a 134, secondo la sua.

Un numero di pagina vale quindi per un riferimento solo. Il codice identifica il chip prima di scrivere, come descrive la pagina dell'identificazione del chip dal lato di chi compra, e rifiuta di eseguire la sua sequenza su qualsiasi altro: la pagina 41 di un NTAG213 è normale memoria utente su un NTAG215.

Una pagina si scrive intera

La WRITE mette quattro byte in una volta, e il riferimento di MifareUltralight documenta writePage() come scrittura di una pagina. I byte di configurazione condividono le pagine, quindi cambiarne uno vuol dire leggere la pagina, cambiare quel byte, e riscrivere i quattro.

Riscrivi quello che hai letto per i byte che non intendi cambiare. Un byte scritto a zero perché il codice non ne conosceva il significato è un'impostazione cambiata senza che nessuno l'abbia decisa, e certe impostazioni non tornano indietro.

Non tutte le pagine rileggono quello che è stato scritto. La pagina che porta la password di norma non è leggibile, come nota la pagina della password, quindi il codice tiene il valore che ha scritto invece di aspettarsi di rileggerlo.

Un ordine che ti lascia dentro

Scrivi la password prima dell'impostazione che accende la protezione. La pagina della password descrive i due passi, la chiave e il suo perimetro; nell'ordine contrario, la protezione parte con qualunque password il chip portasse prima, e le scritture successive dentro l'intervallo protetto vogliono quella.

Lascia le impostazioni a senso unico per la fine. I bit di blocco, un contatore che non si può spegnere una volta acceso, e un bit che congela la configurazione stessa sono permanenti sui chip che li hanno, come avverte la pagina della configurazione, e ciascuno di essi messo presto trasforma un errore più avanti nella sequenza in un tag perso.

Rileggi ogni pagina dopo averla scritta, tranne quelle che non sono leggibili, e fermati alla prima differenza. Una sequenza che va avanti dopo una scrittura fallita costruisce su uno stato che nessuno conosce.

Un tag da perdere prima

Esegui la sequenza completa su un tag prima della serie, poi verificalo da un secondo apparecchio che non porta la password: una scrittura che riesce lì vuol dire che il perimetro è sbagliato, la prova che la pagina della password raccomanda. Sullo stesso tag, prova anche una password sbagliata dove il chip limita i tentativi falliti, dato che il limite va in produzione con tutto il resto.

Tieni quel tag, etichettato con la sequenza e la data. È il riferimento quando una serie si comporta diversamente, lo stesso ragionamento del tag morto che la pagina del tag corrotto suggerisce di tenere per provare un passo di verifica.

Poi scrivi la serie con lo stesso codice, non con una sua variante. La pagina della scrittura in serie copre il lato della produzione.

Domande frequenti

L'API NDEF può scrivere le pagine di configurazione?

No. La configurazione sta fuori dal NDEF, quindi vuole comandi WRITE grezzi sulle pagine che la scheda tecnica del chip nomina.

Perché la mia scrittura di configurazione è finita nel contenuto?

Il numero di pagina apparteneva a un altro chip. La pagina 41 porta configurazione su un NTAG213 e memoria utente su un NTAG215.

Una configurazione sbagliata si può disfare?

Una password si può cambiare con quella attuale. I bit di blocco e una configurazione congelata no, su nessun chip che li abbia.

La password va scritta prima o dopo l'impostazione di protezione?

Prima. Altrimenti la protezione parte con la password che il chip già portava, e le scritture successive nell'intervallo protetto vogliono quella.