TigerTag Python SDK

SDK open source · protocollo TigerTag v2.2

TigerTag Python SDK

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.

pip install tigertag
from tigertag import TigerTag

tag = TigerTag.from_pages(uid, payload)        # from your NFC SDK
print(tag.pretty())                            # human-readable summary
print(tag.verify())                            # VALID / NOT SIGNED / INVALID
print(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. 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. 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. 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]              # everything
pip 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": "…"}
Altro nel README

Cosa legge l'SDK

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.

Struttura della memoria di un chip NTAG TigerTag, pagine da 0x04 a 0x27, campo per campo La specifica TigerTag

Cosa fa l'SDK

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 output
tigertag dump.bin --json       # output as JSON
tigertag dump.bin --raw        # raw protocol fields, no DB lookup
tigertag update [--force]      # check for new reference data now (--catalog, --data-dir)
tigertag dump.bin --offline    # no network access at all
tigertag --version             # show SDK version

python -m tigertag dump.bin    # same, via module runner
Altro nel README

Un file, nessun pacchetto

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ì.

parse_tigertag.py

Playground

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.

python3 tools/server.py 7432
Altro nel README

Domande

Che cos'è l'SDK Python TigerTag?

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).

tigertag su PyPI