Leia, verifique e escreva chips NFC TigerTag em JavaScript.
O SDK do protocolo aberto TigerTag para filamento e resina de impressão 3D: converte os bytes de um chip em material, cor, definições de impressão e quantidade, verifica a assinatura ECDSA-P256 sem ligação e constrói novas etiquetas byte a byte.
Cada alteração devolve um novo TigerTag; toBytes() dá os bytes a escrever. erase() dá um chip em branco.
// Immutable surgical update — returns a new TigerTag, original unchanged
const patched = tag.patch({ nozzleTempMin: 200, dryTemp: 55 });
// Erase a chip — write the returned 80 bytes to the NFC chip
const blankBytes = TigerTag.erase();
Um único pacote para tudo o que diz respeito a um chip TigerTag: ler, verificar, escrever e manter os dados atualizados.
Ler qualquer dump
fromPages(), fromDump() e fromFile() aceitam um UID com 80 ou 144 bytes, ou um dump completo de 180 bytes. pretty(), describe(), toDict() e toRawDict() devolvem texto, um parágrafo em linguagem corrente ou objetos prontos para JSON.
Verificar a autenticidade sem ligação
verify() verifica a assinatura ECDSA-P256 que associa o UID do chip aos dados do produto, com a chave pública incluída no pacote. O resultado é valid, invalid, unsigned, no_key ou no_uid.
Criar e alterar etiquetas
create(), asInit(), patch() e erase() constroem os bytes do chip. Um TigerTag é imutável: patch() devolve um novo e recusa alterar idTigertag, idProduct, uid ou a assinatura.
Construir a partir do catálogo
TigerTag.fromCatalog(productId) constrói um TigerTag+ completo a partir do catálogo oficial de produtos, transferido na primeira utilização e guardado em cache numa pasta por utilizador.
Sincronizar com o fabricante
Para chips TigerTag+, rawApi(), diffApi() e patchFromApi() obtêm os dados atuais da marca, listam o que difere do chip e aplicam-no.
Dados de referência, primeiro sem ligação
As tabelas de material, marca, aspeto, tipo, diâmetro e unidade vêm no pacote. Uma verificação em segundo plano atualiza-as no máximo uma vez por dia; offline: true ou TIGERTAG_OFFLINE=1 significa zero chamadas de rede.
Três tipos de etiqueta
O SDK lê e escreve os três tipos de etiqueta do protocolo TigerTag v2.2, em chips NTAG213, NTAG215 e NTAG216.
idProduct 0xFFFFFFFF
TigerTag (Maker)
Todos os campos no chip, legíveis totalmente sem ligação.
idProduct 0x00000000
TigerTag Init
Um modelo em branco, pronto a programar. TigerTag.asInit() cria um.
ECDSA-P256
TigerTag+
Todos os campos no chip, mais um identificador de produto associado à API na nuvem para as atualizações do fabricante. Um chip assinado verifica-se com verify().
Na linha de comandos e dentro do Electron
O pacote instala o comando tigertag e funciona no processo principal de uma aplicação Electron.
O comando tigertag
Interpreta um dump como texto, JSON ou campos em bruto, e atualiza as tabelas de referência quando pretender.
# Parse a dump file
tigertag dump.bin
# JSON output
tigertag dump.bin --json
# Update the reference tables now (into the data dir)
tigertag update
Dentro de uma aplicação Electron
Interprete os chips no processo principal, sem subprocessos para distribuir.
// main.js — replace parseTigerTag() subprocess dependency
const { TigerTag, TigerTagDB } = require('tigertag');
function parseTigerTag(payload, uid) {
const tag = TigerTag.fromPages(Buffer.from(uid), Buffer.from(payload));
const db = new TigerTagDB();
return {
dict: tag.toDict(db),
raw: tag.toRawDict(),
sig: tag.verify(db).toDict(),
};
}
Experimente sem leitor: o playground
Uma página web local, servida pelo próprio SDK, que constrói e descodifica chips TigerTag e mostra cada byte. Não é preciso hardware NFC.
Entrada e saída do SDK lado a lado: a chamada create(), depois pretty(), describe(), verify() e toDict().
Com um ou mais leitores PC/SC como o ACR122U, os chips são lidos logo que pousados, e Burn escreve o conteúdo atual.
O playground nunca escreve uma assinatura: só um fabricante certificado a pode emitir.
npm run playground
# then open http://localhost:7432/tools/playground.html# Enable live reader support (one-time install)
npm install ws nfc-pcsc
Parte do ecossistema TigerTag
O SDK implementa a especificação aberta TigerTag, a par das outras ferramentas oficiais.
Especificação do protocolo TigerTag
A especificação aberta que o SDK implementa: organização da memória, tipos de etiqueta, esquema de assinatura e base de dados de referência.
Execute npm install tigertag, ou pnpm add tigertag, yarn add tigertag ou bun add tigertag. Requer Node.js 18 ou mais recente e nenhum outro pacote para ler e verificar.
É preciso ligação à internet?
Não. As tabelas de referência e a chave pública de assinatura vêm no pacote, pelo que a leitura e a verificação funcionam sem ligação. A rede só é usada para a verificação diária das tabelas, o catálogo de produtos e os métodos na nuvem do TigerTag+; offline: true ou TIGERTAG_OFFLINE=1 desliga-a.
Com que chips e leitores NFC funciona?
A TigerTag usa chips NTAG213, NTAG215 e NTAG216 (ISO 14443-3). O SDK recebe o UID e os bytes lidos pela sua biblioteca NFC, pelo que não depende de um leitor; o README mostra nfc-pcsc com um ACR122U.
Como verifica que um chip é autêntico?
verify() verifica a assinatura ECDSA-P256 do chip sobre o UID e os identificadores do produto, com a chave pública incluída no pacote. Devolve valid, invalid, unsigned (uma etiqueta Maker), no_key ou no_uid, sem contactar nenhum servidor.
Consegue escrever chips?
Constrói os bytes: create(), patch(), asInit(), erase() e fromCatalog() dão um TigerTag cujo toBytes() é o conteúdo que a sua biblioteca NFC escreve. O botão Burn do playground escreve-o nos chips dos leitores ligados.
Existe uma versão em Python?
Sim: TigerTag-SDK-Python é a versão Python da mesma API, e os dois SDK servem a mesma página de playground.
Qual é a licença do SDK?
Apache-2.0, que inclui uma concessão expressa de patentes. Implementar o próprio protocolo TigerTag não requer qualquer licença.
Um comando para começar
npm install tigertag e, a seguir, TigerTag.fromPages(uid, payload).