Leggi, verifica e scrivi chip NFC TigerTag da Python.
Il pacchetto tigertag trasforma i 144 byte di un chip TigerTag in materiale, colori, temperature e quantità, verifica la sua firma ECDSA-P256 e crea nuovi tag. I dati di riferimento sono inclusi nel pacchetto, quindi funziona offline subito dopo pip install.
from tigertag import TigerTag
tag = TigerTag.from_pages(uid, payload) # from your NFC SDKprint(tag.pretty()) # human-readable summaryprint(tag.verify()) # VALID / NOT SIGNED / INVALIDprint(tag.to_dict()) # JSON-ready dict
L'avvio rapido, come lo riporta il README: uid e payload arrivano dal tuo lettore NFC.
1.4.0Ultima versione ·
3.8+Python 3.8 e successivi
0Dipendenze del nucleo in esecuzione: solo la libreria standard
144Byte letti per chip: pagine da 0x04 a 0x27, dati e firma
Inizia in tre passi
Il pacchetto tigertag è su PyPI. Installalo, passagli ciò che restituisce il tuo lettore NFC e verifica la firma.
1
Installa
Un solo comando. Il nucleo usa solo la libreria standard e i dati di riferimento sono inclusi: nessuna configurazione e nessuna rete al primo avvio.
pip install tigertag
2
Leggi un chip
Passa l'UID di 7 byte e il payload di 144 byte restituiti dal tuo SDK NFC. pretty(), to_dict() e validate() forniscono un riepilogo, un dict pronto per JSON e gli avvisi.
from tigertag import TigerTag
tag = TigerTag.from_pages(uid, payload)
3
Verifica la firma
L'extra verify aggiunge il pacchetto cryptography, così tag.verify() controlla la firma ECDSA-P256 offline con la chiave pubblica inclusa nell'SDK.
pip install tigertag[verify]
Extra opzionali
sync aggiunge requests (gli aggiornamenti funzionano già con la libreria standard), verify aggiunge cryptography per le firme, full installa entrambi e nfc aggiunge pyscard per i lettori PC/SC nel playground.
pip install tigertag # core only — stdlib, works fully offline (data bundled)pip install tigertag[sync] # + requests (optional — updates use the standard library)pip install tigertag[verify] # + cryptography (ECDSA signature check)pip install tigertag[full] # everythingpip install "tigertag[nfc]"# + pyscard (playground: ACR122U / PC/SC readers)
Firme e struttura del chip
Un TigerTag firmato contiene una firma ECDSA-P256 che lega l'UID del chip ai dati del prodotto. L'SDK la verifica senza chiamare alcun server.
tag.verify()
Restituisce un SignatureResult: ok vale True solo per una firma valida, e status spiega altrimenti il motivo (nessuna firma, cryptography assente, nessuna chiave pubblica, nessun UID).
result = tag.verify() # fully autonomous — finds the public key from the bundled DB
result.ok # True only for VALID
result.status # "valid" | "invalid" | "unsigned" | "no_crypto" | "no_key" | "no_uid"
str(result) # "VALID" | "INVALID" | "NOT SIGNED" | "NO CRYPTO — …" | "NO PUBLIC KEY — …" | "NO UID — …"
result.to_dict()# {"status": "valid", "ok": True, "detail": "…"}
from_pages() accetta 144 byte (pagine da 0x04 a 0x27, dati e firma) o 80 byte (solo dati). from_dump() accetta anche un dump completo di 180 byte e ne estrae l'UID.
Tutto ciò che documenta il README, in un unico pacchetto che funziona offline.
Prima di tutto offline
Le tabelle di riferimento e il catalogo TigerTag+ (circa 1 MB) sono inclusi nel pacchetto. offline=True o TIGERTAG_OFFLINE=1 disattiva ogni accesso alla rete.
Verifica della firma
ECDSA-P256, completamente offline, con la chiave pubblica del file id_version.json incluso. Installa tigertag[verify] per aggiungere il pacchetto cryptography.
Crea, modifica, cancella
TigerTag.create() crea un tag da zero, patch() restituisce un nuovo tag con campi modificati, erase() restituisce gli 80 byte a zero che cancellano un chip. Modificare UID o firma solleva ValueError.
Catalogo TigerTag+
TigerTag.from_catalog() trasforma un ID prodotto TigerTag+ in un tag completo pronto da scrivere, dal catalogo ufficiale. catalog_entry() fornisce titolo, marca, SKU e foto.
Aggiornamento dei dati
Il primo TigerTagDB di un processo cerca nuovi dati al massimo una volta al giorno e non solleva mai errori: in caso di problemi usa i dati locali. tigertag update controlla subito.
Qualsiasi SDK NFC
from_pages(uid, payload) accetta ciò che restituiscono Android, iOS, Flutter e nfcpy. Il README contiene un esempio completo per un lettore ACR122U con nfcpy.
Riga di comando e file singolo
Il comando tigertag legge il dump di un chip, lo mostra come testo, JSON o campi grezzi e aggiorna i dati di riferimento.
tigertag dump.bin # parse + human-readable outputtigertag dump.bin --json # output as JSONtigertag dump.bin --raw # raw protocol fields, no DB lookuptigertag update [--force] # check for new reference data now (--catalog, --data-dir)tigertag dump.bin --offline # no network access at alltigertag --version # show SDK versionpython -m tigertag dump.bin # same, via module runner
parse_tigertag.py è una copia completa e autonoma dell'SDK per i progetti che non possono aggiungere dipendenze: copia il file e importa TigerTag da lì.
Una pagina web locale che crea, legge e verifica tag con questo SDK, senza hardware. Con un ACS ACR122U o un altro lettore PC/SC legge e scrive anche chip reali.
Un pacchetto Python, tigertag su PyPI, che legge, verifica, crea e modifica i chip NFC TigerTag di filamenti e resine per la stampa 3D. È open source con licenza Apache 2.0 e implementa il protocollo TigerTag v2.2.
Come si installa?
Esegui pip install tigertag con Python 3.8 o successivo. Aggiungi tigertag[verify] per le firme, tigertag[full] per tutte le dipendenze opzionali o tigertag[nfc] per i lettori PC/SC del playground.
Serve una connessione a internet?
No. I dati di riferimento sono inclusi nel pacchetto, quindi lettura e verifica funzionano offline. Dalla versione 1.3.0 l'SDK cerca nuovi dati al massimo una volta al giorno; offline=True, TIGERTAG_OFFLINE=1 o auto_update=False lo disattiva.
Quali chip legge?
NTAG213, NTAG215, NTAG216 e chip compatibili ISO 14443-3, con i tre tipi di tag: TigerTag (Maker), TigerTag Init e TigerTag+. L'SDK li legge tutti e tre allo stesso modo.
Come verifica che un chip sia autentico?
tag.verify() controlla la firma ECDSA-P256 del chip, che lega il suo UID ai dati del prodotto, con la chiave pubblica inclusa nel pacchetto e senza chiamare un server. Serve l'UID: leggi il chip con from_pages(uid, payload).
Si può usare senza installare un pacchetto?
Sì. parse_tigertag.py, nella radice del repository, è una copia completa e autonoma: copia il file nel tuo progetto e importa TigerTag da lì.
Esiste uno strumento a riga di comando?
Sì. tigertag dump.bin mostra un riepilogo leggibile, --json mostra JSON e --raw i campi grezzi del protocollo; tigertag update aggiorna i dati di riferimento e python -m tigertag funziona allo stesso modo.
Leggi il tuo primo TigerTag in Python
pip install tigertag, poi TigerTag.from_pages(uid, payload).