Leggi, verifica e scrivi chip NFC TigerTag da JavaScript.
L'SDK del protocollo aperto TigerTag per filamento e resina da stampa 3D: trasforma i byte di un chip in materiale, colore, parametri di stampa e quantità, verifica la sua firma ECDSA-P256 offline e costruisce nuovi tag byte per byte.
const { TigerTag } = require('tigertag');
const tag = TigerTag.fromPages(uid, payload); // from your NFC SDK
console.log(tag.pretty()); // human-readable summary
console.log(String(tag.verify())); // VALID / NOT SIGNED / INVALID
console.log(tag.toDict()); // JSON-ready object
L'avvio rapido del README: funziona subito dopo npm install, senza configurazione.
1.2.1Versione attuale, pubblicata il 2026-11-06
Node.js 18+Usa crypto e fetch integrati
0Dipendenze di esecuzione per leggere e verificare
Apache-2.0Licenza open source, con concessione di brevetti
Inizia in tre passi
Installa il pacchetto, leggi un chip con la tua libreria NFC, scrivine uno nuovo. Le tabelle di riferimento incluse fanno funzionare il primo avvio senza rete.
1
Installa il pacchetto
Dal registro npm. pnpm, yarn e bun installano lo stesso pacchetto.
npm install tigertag
pnpm add tigertag
yarn add tigertag
bun add tigertag
2
Leggi un chip
Passa l'UID di 7 byte e i 144 byte letti dalla tua libreria NFC. Qui con nfc-pcsc e un ACR122U.
Ogni modifica restituisce un nuovo TigerTag; toBytes() dà i byte da riscrivere. erase() dà un chip vuoto.
// 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();
Un solo pacchetto per ogni aspetto di un chip TigerTag: leggere, verificare, scrivere e tenere aggiornati i dati.
Leggi qualsiasi dump
fromPages(), fromDump() e fromFile() accettano un UID con 80 o 144 byte, o un dump completo di 180 byte. pretty(), describe(), toDict() e toRawDict() restituiscono testo, un paragrafo in linguaggio naturale o oggetti pronti per JSON.
Verifica l'autenticità offline
verify() controlla la firma ECDSA-P256 che lega l'UID del chip ai suoi dati di prodotto, con la chiave pubblica inclusa nel pacchetto. Il risultato è valid, invalid, unsigned, no_key o no_uid.
Crea e modifica tag
create(), asInit(), patch() ed erase() costruiscono i byte del chip. Un TigerTag è immutabile: patch() ne restituisce uno nuovo e rifiuta di cambiare idTigertag, idProduct, uid o la firma.
Costruisci dal catalogo
TigerTag.fromCatalog(productId) costruisce un TigerTag+ completo dal catalogo ufficiale dei prodotti, scaricato al primo uso e salvato in una cartella di cache per utente.
Sincronizza con il produttore
Per i chip TigerTag+, rawApi(), diffApi() e patchFromApi() recuperano i dati attuali del marchio, elencano le differenze con il chip e le applicano.
Dati di riferimento, prima offline
Le tabelle di materiale, marca, aspetto, tipo, diametro e unità sono incluse nel pacchetto. Un controllo in background le aggiorna al massimo una volta al giorno; offline: true o TIGERTAG_OFFLINE=1 significa zero chiamate di rete.
Tre tipi di tag
L'SDK legge e scrive i tre tipi di tag del protocollo TigerTag v2.2, su chip NTAG213, NTAG215 e NTAG216.
idProduct 0xFFFFFFFF
TigerTag (Maker)
Tutti i campi sul chip, leggibili completamente offline.
idProduct 0x00000000
TigerTag Init
Un modello vuoto, pronto da programmare. TigerTag.asInit() ne crea uno.
ECDSA-P256
TigerTag+
Tutti i campi sul chip, più un ID prodotto collegato all'API cloud per gli aggiornamenti del produttore. Un chip firmato si verifica con verify().
Da riga di comando e dentro Electron
Il pacchetto installa un comando tigertag e funziona nel processo principale di un'app Electron.
Il comando tigertag
Interpreta un dump come testo, JSON o campi grezzi, e aggiorna le tabelle di riferimento su richiesta.
# 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 un'app Electron
Interpreta i chip nel processo principale, senza sottoprocessi da distribuire.
// 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(),
};
}
Provalo senza lettore: il playground
Una pagina web locale, servita dall'SDK stesso, che costruisce e decodifica chip TigerTag e mostra ogni byte. Non serve hardware NFC.
Ingresso e uscita dell'SDK fianco a fianco: la chiamata create(), poi pretty(), describe(), verify() e toDict().
Con uno o più lettori PC/SC come l'ACR122U, i chip vengono letti appena appoggiati, e Burn scrive il contenuto attuale.
Il playground non scrive mai una firma: solo un produttore certificato può emetterne una.
npm run playground
# then open http://localhost:7432/tools/playground.html# Enable live reader support (one-time install)
npm install ws nfc-pcsc
Parte dell'ecosistema TigerTag
L'SDK implementa la specifica aperta TigerTag, accanto agli altri strumenti ufficiali.
Specifica del protocollo TigerTag
La specifica aperta implementata dall'SDK: struttura della memoria, tipi di tag, schema di firma e database di riferimento.
Esegui npm install tigertag, oppure pnpm add tigertag, yarn add tigertag o bun add tigertag. Richiede Node.js 18 o successivo e nessun altro pacchetto per leggere e verificare.
Serve una connessione internet?
No. Le tabelle di riferimento e la chiave pubblica di firma sono incluse nel pacchetto, quindi lettura e verifica funzionano offline. La rete serve solo per il controllo giornaliero delle tabelle, il catalogo prodotti e i metodi cloud TigerTag+; offline: true o TIGERTAG_OFFLINE=1 la disattiva.
Con quali chip e lettori NFC funziona?
TigerTag usa chip NTAG213, NTAG215 e NTAG216 (ISO 14443-3). L'SDK riceve l'UID e i byte letti dalla tua libreria NFC, quindi non è legato a un lettore; il README mostra nfc-pcsc con un ACR122U.
Come verifica che un chip sia autentico?
verify() controlla la firma ECDSA-P256 del chip sul suo UID e sui suoi identificativi di prodotto, con la chiave pubblica inclusa nel pacchetto. Restituisce valid, invalid, unsigned (un tag Maker), no_key o no_uid, senza chiamare alcun server.
Può scrivere chip?
Costruisce i byte: create(), patch(), asInit(), erase() e fromCatalog() danno un TigerTag il cui toBytes() è il contenuto che la tua libreria NFC scrive. Il pulsante Burn del playground lo scrive sui chip dei lettori collegati.
Esiste una versione Python?
Sì: TigerTag-SDK-Python è la versione Python della stessa API, e i due SDK servono la stessa pagina di playground.
Con quale licenza è distribuito l'SDK?
Apache-2.0, che include una concessione esplicita di brevetti. Implementare il protocollo TigerTag in sé non richiede alcuna licenza.
Un comando per iniziare
npm install tigertag, poi TigerTag.fromPages(uid, payload).