TigerTag-NFC-Chips mit Python lesen, prüfen und schreiben.
Das Paket tigertag macht aus den 144 Bytes eines TigerTag-Chips Material, Farben, Temperaturen und Menge, prüft seine ECDSA-P256-Signatur und erstellt neue Tags. Die Referenzdaten sind im Paket enthalten, daher funktioniert es direkt nach pip install offline.
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
Der Schnellstart, wie ihn die README zeigt: uid und payload kommen von Ihrem NFC-Lesegerät.
1.4.0Aktuelle Version ·
3.8+Python 3.8 und neuer
0Laufzeitabhängigkeiten des Kerns: nur die Standardbibliothek
144Gelesene Bytes pro Chip: Seiten 0x04 bis 0x27, Daten und Signatur
In drei Schritten loslegen
Das Paket tigertag liegt auf PyPI. Installieren, mit den Daten Ihres NFC-Lesegeräts aufrufen, Signatur prüfen.
1
Installieren
Ein Befehl. Der Kern nutzt nur die Standardbibliothek, die Referenzdaten sind enthalten: keine Konfiguration, kein Netzwerk beim ersten Start.
pip install tigertag
2
Einen Chip lesen
Übergeben Sie die 7-Byte-UID und den 144-Byte-Payload aus Ihrem NFC-SDK. pretty(), to_dict() und validate() liefern dann eine Zusammenfassung, ein JSON-fähiges Dict und Warnungen.
from tigertag import TigerTag
tag = TigerTag.from_pages(uid, payload)
3
Signatur prüfen
Das Extra verify fügt das Paket cryptography hinzu, damit tag.verify() die ECDSA-P256-Signatur offline mit dem im SDK enthaltenen öffentlichen Schlüssel prüft.
pip install tigertag[verify]
Optionale Extras
sync fügt requests hinzu (Updates funktionieren schon mit der Standardbibliothek), verify fügt cryptography für Signaturen hinzu, full installiert beides, nfc fügt pyscard für PC/SC-Lesegeräte im Playground hinzu.
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)
Signaturen und Chip-Aufbau
Ein signierter TigerTag trägt eine ECDSA-P256-Signatur, die die Chip-UID an die Produktdaten bindet. Das SDK prüft sie ohne Serveraufruf.
tag.verify()
Liefert ein SignatureResult: ok ist nur bei gültiger Signatur True, status nennt sonst den Grund (keine Signatur, cryptography fehlt, kein öffentlicher Schlüssel, keine 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() nimmt 144 Bytes (Seiten 0x04 bis 0x27, Daten und Signatur) oder 80 Bytes (nur Daten). from_dump() akzeptiert auch einen vollständigen 180-Byte-Dump und entnimmt ihm die UID.
Alles, was die README beschreibt, in einem Paket, das offline funktioniert.
Offline zuerst
Die Referenztabellen und der TigerTag+-Katalog (etwa 1 MB) sind im Paket enthalten. offline=True oder TIGERTAG_OFFLINE=1 schaltet jeden Netzwerkzugriff ab.
Signaturprüfung
ECDSA-P256, vollständig offline, mit dem öffentlichen Schlüssel aus der mitgelieferten id_version.json. Installieren Sie tigertag[verify] für das Paket cryptography.
Erstellen, ändern, löschen
TigerTag.create() baut ein Tag von Grund auf, patch() gibt ein neues Tag mit geänderten Feldern zurück, erase() liefert die 80 Null-Bytes zum Löschen eines Chips. Eine Änderung von UID oder Signatur löst ValueError aus.
TigerTag+-Katalog
TigerTag.from_catalog() macht aus einer TigerTag+-Produkt-ID ein vollständiges, schreibfertiges Tag aus dem offiziellen Katalog. catalog_entry() liefert Titel, Marke, SKU und Foto.
Aktualisierung der Referenzdaten
Die erste TigerTagDB eines Prozesses sucht höchstens einmal täglich nach neuen Daten und wirft nie einen Fehler: bei jedem Problem werden die lokalen Daten genutzt. tigertag update prüft sofort.
Jedes NFC-SDK
from_pages(uid, payload) nimmt, was Android, iOS, Flutter und nfcpy liefern. Die README enthält ein vollständiges Beispiel für ein ACR122U-Lesegerät mit nfcpy.
Kommandozeile und Einzeldatei
Der Befehl tigertag liest einen Chip-Dump, gibt ihn als Text, JSON oder Rohfelder aus und aktualisiert die Referenzdaten.
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 ist eine vollständige, eigenständige Kopie des SDK für Projekte ohne zusätzliche Abhängigkeit: Datei hineinlegen und TigerTag daraus importieren.
Eine lokale Webseite, die mit diesem SDK Tags erstellt, liest und prüft, ganz ohne Hardware. Mit einem ACS ACR122U oder einem anderen PC/SC-Lesegerät liest und schreibt sie auch echte Chips.
Ein Python-Paket, tigertag auf PyPI, das TigerTag-NFC-Chips für 3D-Druck-Filament und -Harz liest, prüft, erstellt und ändert. Es ist Open Source unter der Apache-Lizenz 2.0 und implementiert das TigerTag-Protokoll v2.2.
Wie installiere ich es?
Führen Sie pip install tigertag mit Python 3.8 oder neuer aus. tigertag[verify] fügt die Signaturprüfung hinzu, tigertag[full] alle optionalen Abhängigkeiten, tigertag[nfc] PC/SC-Lesegeräte für den Playground.
Braucht es eine Internetverbindung?
Nein. Die Referenzdaten sind im Paket enthalten, Lesen und Prüfen funktionieren offline. Seit Version 1.3.0 sucht das SDK höchstens einmal täglich nach neuen Referenzdaten; offline=True, TIGERTAG_OFFLINE=1 oder auto_update=False schaltet das ab.
Welche Chips liest es?
NTAG213, NTAG215, NTAG216 und ISO-14443-3-kompatible Chips, mit den drei Tag-Typen TigerTag (Maker), TigerTag Init und TigerTag+. Das SDK liest alle drei auf dieselbe Weise.
Wie prüft es, ob ein Chip echt ist?
tag.verify() prüft die ECDSA-P256-Signatur des Chips, die seine UID an die Produktdaten bindet, mit dem im Paket enthaltenen öffentlichen Schlüssel und ohne Serveraufruf. Dafür wird die UID gebraucht: Lesen Sie den Chip mit from_pages(uid, payload).
Geht es auch ohne Paketinstallation?
Ja. parse_tigertag.py im Wurzelverzeichnis des Repositorys ist eine vollständige, eigenständige Kopie: Datei ins Projekt kopieren und TigerTag daraus importieren.
Gibt es ein Kommandozeilenwerkzeug?
Ja. tigertag dump.bin gibt eine lesbare Zusammenfassung aus, --json JSON und --raw die rohen Protokollfelder; tigertag update aktualisiert die Referenzdaten, und python -m tigertag funktioniert genauso.
Lesen Sie Ihren ersten TigerTag mit Python
pip install tigertag, dann TigerTag.from_pages(uid, payload).