Ir para o conteúdo
Idioma: PT

Como gravar as páginas de configuração de uma tag sem estragá-la?

Leia antes o mapa de memória do chip, grave cada página inteira depois de lê-la, ponha a senha antes do ajuste que liga a proteção, e deixe cada bit sem volta por último. Depois execute a sequência inteira numa tag que você possa perder, já que nenhuma API de plataforma confere o que o código grava ali.

O mapa pertence ao chip

As páginas de configuração guardam os ajustes que a página da configuração lista: senha, condições de acesso, contadores, espelhamento e bits de bloqueio. Nenhum tipo do NFC Forum os define, então as posições deles mudam de um chip para o seguinte. Uma NTAG213 guarda os bytes de bloqueio dinâmicos dela na página 40 e a configuração dela nas páginas 41 a 44, segundo a ficha dela no wakdev.com; uma NTAG215 usa as páginas 130 a 134, segundo a dela.

Um número de página vale portanto para uma referência só. O código identifica o chip antes de gravar, como descreve do lado de quem compra a página da identificação do chip, e recusa executar a sequência dele em qualquer outra coisa: a página 41 de uma NTAG213 é memória de usuário comum numa NTAG215.

Uma página se grava inteira

WRITE põe quatro bytes de uma vez, e a referência do MifareUltralight documenta writePage() como gravando uma página. Os bytes de configuração dividem páginas, então mudar um deles quer dizer ler a página, mudar esse byte, e gravar os quatro de volta.

Grave de volta o que você leu nos bytes que não pretende mudar. Um byte gravado como zero porque o código não sabia o significado dele é um ajuste mudado sem ninguém ter decidido, e alguns ajustes não voltam.

Nem toda página relê o que foi gravado. A página que guarda a senha normalmente não é legível, como observa a página da senha, então o código guarda o valor que gravou em vez de esperar relê-lo.

Uma ordem que mantém você dentro

Grave a senha antes do ajuste que liga a proteção. A página da senha descreve os dois passos, a chave e o alcance dela; na outra ordem, a proteção começa com a senha que o chip guardava antes, e as gravações posteriores dentro da faixa protegida precisam dessa.

Deixe os ajustes sem volta para o fim. Os bits de bloqueio, um contador que não dá para desabilitar depois de habilitado, e um bit que congela a própria configuração são permanentes nos chips que os têm, como avisa a página da configuração, e cada um posto cedo transforma um erro mais adiante na sequência numa tag perdida.

Releia cada página depois de gravá-la, salvo as que não são legíveis, e pare na primeira diferença. Uma sequência que continua depois de uma gravação fracassada constrói sobre um estado que ninguém conhece.

Uma tag para perder primeiro

Execute a sequência completa numa tag antes do lote, depois confira a partir de um segundo aparelho que não guarda a senha: uma gravação que dá certo ali quer dizer que o alcance está errado, o teste que a página da senha recomenda. Na mesma tag, experimente também uma senha errada onde o chip limita as tentativas fracassadas, já que o limite entra em produção com tudo o mais.

Guarde essa tag, etiquetada com a sequência e a data. Ela é a referência quando um lote se comporta de outro jeito, o mesmo raciocínio da tag morta que a página da tag corrompida sugere guardar para testar um passo de verificação.

Depois grave o lote com o mesmo código, não com uma variante dele. A página da gravação em série cobre o lado da produção.

Perguntas frequentes

A API NDEF consegue gravar páginas de configuração?

Não. A configuração fica fora do NDEF, então ela exige comandos WRITE brutos nas páginas que a ficha técnica do chip nomeia.

Por que a minha gravação de configuração caiu no conteúdo?

O número de página pertencia a outro chip. A página 41 guarda configuração numa NTAG213 e memória de usuário numa NTAG215.

Uma configuração errada dá para desfazer?

Uma senha dá para mudar com a atual. Os bits de bloqueio e uma configuração congelada não, em chip algum que os tenha.

A senha deve ser gravada antes ou depois do ajuste de proteção?

Antes. Senão a proteção começa com a senha que o chip já guardava, e as gravações posteriores na faixa protegida precisam dessa.