Descodificador NDEF Hex: Compreenda Cada Byte do seu Payload de Tag NFC
1O que é o NDEF e por que Precisa de um Descodificador?
NDEF — NFC Data Exchange Format — é o formato de dados binários definido pelo NFC Forum para armazenar e trocar informação entre dispositivos NFC e tags. É a linguagem universal falada por tags NFC, smartphones e leitores NFC em todo o mundo. Compreender o NDEF é essencial para qualquer programador, integrador ou utilizador técnico que trabalhe com tecnologia NFC. Quando lê uma tag NFC com uma app como o NFC Tools, a app mostra-lhe o conteúdo legível (um URL, um texto, um vCard). Mas por detrás disso, a tag armazena dados binários brutos — uma sequência de bytes com uma estrutura muito específica definida pela especificação NDEF. Esta ferramenta permite-lhe ir aos bastidores: cole a representação hexadecimal bruta de qualquer mensagem NDEF e veja exatamente como está estruturada, registo a registo, campo a campo. Isto é inestimável para depurar integrações NFC. Talvez uma tag não esteja a ser lida corretamente num determinado dispositivo. Talvez queira verificar que uma tag programada contém exatamente o payload correto. Talvez esteja a fazer engenharia inversa de uma tag NFC proprietária para compreender a sua estrutura. Ou talvez esteja a aprender o formato NDEF e queira ver como os diferentes tipos de registo são codificados em binário. Este descodificador faz tudo isso — instantaneamente, gratuitamente, sem instalar nada.
2Como Funciona o Descodificador NDEF: Análise da Estrutura Binária
O descodificador processa a entrada hexadecimal analisando a estrutura da mensagem NDEF byte a byte, seguindo a Especificação Técnica NDEF do NFC Forum. Passo 1 — Análise de bytes: A cadeia hex é convertida num array de bytes. Cada par de caracteres hex torna-se um byte (ex. 'd1' = 0xD1 = 209 em decimal). Passo 2 — Análise do cabeçalho do registo: O primeiro byte de cada registo é o byte de cabeçalho. Os seus bits codificam vários indicadores: MB (bit 7) = Message Begin — ativo no primeiro registo. ME (bit 6) = Message End — ativo no último registo. CF (bit 5) = Chunk Flag — para registos fragmentados (raramente usado). SR (bit 4) = Short Record — se ativo, o comprimento do payload é 1 byte; se não, 4 bytes. IL (bit 3) = ID Length presente. TNF (bits 2-0) = Type Name Format, valores 0-7 que definem a família do tipo de registo. Passo 3 — Extração de campos: Após o cabeçalho, o descodificador lê o comprimento do tipo, o comprimento do payload (1 ou 4 bytes conforme o indicador SR) e o comprimento de ID opcional. De seguida lê o campo de tipo, o campo de ID opcional e por fim o payload. Passo 4 — Interpretação do tipo: Conforme o TNF e o tipo, o descodificador interpreta o payload. Para TNF=1 (Well-Known) com tipo 'U', descodifica o URI. Para tipo 'T', descodifica o código de idioma e o texto. Para TNF=2 (MIME), apresenta o tipo MIME. Todos os campos são mostrados com as suas representações hex e ASCII.
3Quando Precisa de um Descodificador NDEF? Casos de Uso Práticos
Os programadores e utilizadores técnicos de NFC recorrem a um descodificador NDEF em muitas situações. Depuração de programação de tags NFC: Programou uma tag com a sua app mas não se comporta como esperado em alguns dispositivos. Copie o dump hex do NFC Tools (Android) usando a função 'Partilhar dados brutos', cole aqui e veja imediatamente se a estrutura NDEF está correta. Os problemas habituais incluem valores TNF incorretos, bytes de comprimento de payload errados ou indicadores de Message Begin/End ausentes. Verificação do conteúdo da tag antes da implementação: Antes de enviar 10 000 tags NFC pré-programadas a um cliente, verifique se a estrutura do payload corresponde à especificação. Isto é crítico em implementações NFC industriais onde as tags são lidas por leitores de hardware personalizados que podem ser rigorosos quanto à conformidade com o formato. Engenharia inversa de tags proprietárias: Alguns dispositivos usam tags NFC com conteúdo não padrão ou proprietário. O descodificador mostra os bytes brutos, TNF, tipo e payload de cada registo, ajudando a compreender o formato mesmo quando o fornecedor não disponibiliza documentação. Aprendizagem da estrutura NDEF: Estudantes e programadores que aprendem tecnologia NFC podem usar esta ferramenta para estudar como os diferentes tipos de registo são codificados. Gere um payload de URL com o Gerador de URL e cole-o aqui para ver exatamente como os bytes estão estruturados. Teste de aplicações de leitura NFC: Os engenheiros de QA que testam apps de leitura NFC podem usar payloads NDEF hex conhecidos como vetores de teste, verificando que a sua app analisa corretamente cada tipo de registo.
4Análise Aprofundada do Formato NDEF: Valores TNF e Tipos de Registo
O campo Type Name Format (TNF) é a chave para compreender que tipo de dados contém um registo NDEF. Existem 8 valores TNF possíveis: TNF 0x00 — Vazio: Sem tipo, sem payload. Usado como marcador em registos fragmentados ou mensagens NDEF vazias. TNF 0x01 — Well-Known: O tipo mais comum. Usa nomes de tipo curtos definidos pelas especificações RTD do NFC Forum: 'U' para URI, 'T' para Texto, 'Sp' para SmartPoster, 'act' para Ação, 'hs' para Handover Select, 'hr' para Handover Request. TNF 0x02 — MIME Media: O campo de tipo contém uma cadeia de tipo MIME (ex. 'text/vcard', 'application/vnd.wfa.wsc'). Usado para vCards, credenciais WiFi e quaisquer dados com um tipo MIME padrão. TNF 0x03 — URI Absoluto: O campo de tipo contém uma cadeia URI completa que identifica o tipo de registo. Usado em algumas aplicações NFC empresariais. TNF 0x04 — Tipo Externo: O tipo é uma cadeia definida pelo utilizador no formato 'dominio.com:nome'. Usado para tipos de registo específicos de aplicação. TNF 0x05 — Desconhecido: O tipo é desconhecido ou não aplicável. O comprimento do tipo deve ser 0. TNF 0x06 — Inalterado: Usado apenas em registos fragmentados (CF=1) para indicar que os registos de continuação têm o mesmo tipo que o primeiro fragmento. TNF 0x07 — Reservado: Reservado pelo NFC Forum para uso futuro. Não deve aparecer em implementações atuais. Para registos URI Well-Known, o primeiro byte do payload é o código identificador de URI, que indica o prefixo do URL.
5Como Obter um Dump Hex NDEF das suas Tags NFC
Para usar o descodificador NDEF, precisa primeiro de obter o payload hex bruto de uma tag NFC física. Estes são os métodos mais comuns: Usando o NFC Tools (Android e iOS): Abra o NFC Tools, vá ao separador 'Ler' e aproxime o telemóvel da tag NFC. Após a leitura, toque no registo que pretende inspecionar e procure a opção 'Partilhar' ou 'Dados brutos'. Algumas versões mostram o hex diretamente na vista de detalhes do registo. Usando o NFC TagInfo da NXP (Android): É a app de diagnóstico NFC mais detalhada disponível. Após digitalizar uma tag, mostra a mensagem NDEF completa em hexadecimal no separador NDEF. Também mostra o tipo de chip, o mapa de memória e quaisquer setores bloqueados ou protegidos. Usando a API NFC do Android: Se estiver a desenvolver uma app Android, leia o conteúdo NDEF da tag usando o método NdefMessage.toByteArray() e converta para hex com um utilitário padrão. Registe o resultado para depuração. Usando a Web NFC API: No Chrome para Android, use a API NDEFReader. O array message.records dá-lhe cada registo e pode aceder a record.data como ArrayBuffer para extrair os bytes brutos. Usando um leitor NFC USB: Ligue um leitor NFC USB (como ACR122U ou ACR1252U) a um computador e use o SDK do leitor ou ferramentas como nfcpy (Python) ou libnfc para despejar o conteúdo da tag e colar o hex aqui para análise. Payloads NDEF de exemplo para testes: Registo URI para example.com: d1010e5503example.com em hex ASCII. Registo de texto 'Hello' em inglês: d1010b5402656e48656c6c6f
FAQPerguntas Frequentes
O que significa TNF num registo NDEF?
TNF é a sigla de Type Name Format. É um campo de 3 bits no cabeçalho do registo NDEF que indica ao leitor como interpretar o campo 'tipo' do registo. Os valores mais comuns são: 0x01 (Well-Known, usado para tipos padrão do NFC Forum como URI e Texto), 0x02 (MIME Media Type, usado para vCards e WiFi) e 0x04 (External Type, usado para dados específicos de aplicação). O valor TNF determina como a pilha NFC do smartphone vai analisar o registo e encaminhá-lo para a app adequada.
Por que o payload descodificado parece caracteres aleatórios?
Se a representação ASCII do payload mostrar caracteres não imprimíveis ou símbolos, significa que o payload contém dados binários que não são texto simples — isto é normal para muitos tipos de registo NDEF. Por exemplo, os dados de vCard usam ASCII imprimível, mas alguns tipos de registo proprietários armazenam dados codificados em binário. A vista hexadecimal é sempre precisa independentemente do conteúdo. Os pontos (.) na vista ASCII representam bytes abaixo de 32 ou acima de 126 que não são caracteres ASCII imprimíveis.
Posso descodificar dados NDEF de uma tag Mifare Classic?
As tags Mifare Classic usam uma organização de memória diferente das tags NDEF nativas como as NTAG21x. O Mifare Classic pode armazenar dados NDEF, mas primeiro deve ser lido com uma ferramenta que gira a autenticação do Mifare Classic (Chave A/B). Depois de ter os bytes de dados brutos da área NDEF de uma tag Mifare Classic (tipicamente a partir do bloco 4, setor 1, após o MAD), pode colar esses bytes aqui. Para análise completa do Mifare Classic, use a nossa ferramenta de Mapa de Memória Mifare.