TigerTag Python SDK

SDK open source · protocole TigerTag v2.2

TigerTag Python SDK

Lisez, vérifiez et écrivez des puces NFC TigerTag en Python.

Le paquet tigertag transforme les 144 octets d'une puce TigerTag en matière, couleurs, températures et quantité, vérifie sa signature ECDSA-P256 et construit de nouveaux tags. Les données de référence sont incluses dans le paquet : tout fonctionne hors ligne dès le 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
Le démarrage rapide, tel que le donne le README : uid et payload viennent de votre lecteur NFC.
1.4.0Dernière version ·
3.8+Python 3.8 et suivants
0Dépendances du cœur à l'exécution : bibliothèque standard uniquement
144Octets lus par puce : pages 0x04 à 0x27, données et signature

Démarrer en trois étapes

Le paquet tigertag est sur PyPI. Installez-le, donnez-lui ce que renvoie votre lecteur NFC et vérifiez la signature.

  1. 1

    Installer

    Une seule commande. Le cœur n'utilise que la bibliothèque standard et les données de référence sont incluses : aucune configuration, aucun réseau au premier lancement.

    pip install tigertag
  2. 2

    Lire une puce

    Passez l'UID de 7 octets et le payload de 144 octets que renvoie votre SDK NFC. pretty(), to_dict() et validate() donnent ensuite un résumé, un dict prêt pour JSON et les avertissements.

    from tigertag import TigerTag
    tag = TigerTag.from_pages(uid, payload)
  3. 3

    Vérifier la signature

    L'extra verify ajoute le paquet cryptography : tag.verify() vérifie alors la signature ECDSA-P256 hors ligne avec la clé publique incluse dans le SDK.

    pip install tigertag[verify]

Extras optionnels

sync ajoute requests (les mises à jour fonctionnent déjà avec la bibliothèque standard), verify ajoute cryptography pour les signatures, full installe les deux, et nfc ajoute pyscard pour les lecteurs PC/SC du 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)

Signatures et organisation de la puce

Une puce TigerTag signée porte une signature ECDSA-P256 qui lie l'UID de la puce aux données du produit. Le SDK la vérifie sans appeler aucun serveur.

tag.verify()

Renvoie un SignatureResult : ok vaut True seulement pour une signature valide, et status indique sinon pourquoi (pas de signature, cryptography absent, pas de clé publique, pas d'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": "…"}
Plus de détails dans le README

Ce que lit le SDK

from_pages() prend 144 octets (pages 0x04 à 0x27, données et signature) ou 80 octets (données seules). from_dump() accepte aussi un dump complet de 180 octets et en extrait l'UID.

Organisation de la mémoire d'une puce NTAG TigerTag, pages 0x04 à 0x27, champ par champ La spécification TigerTag

Ce que fait le SDK

Tout ce que documente le README, dans un seul paquet qui fonctionne hors ligne.

Hors ligne d'abord

Les tables de référence et le catalogue TigerTag+ (environ 1 Mo) sont livrés dans le paquet. offline=True ou TIGERTAG_OFFLINE=1 coupe tout accès réseau.

Vérification de signature

ECDSA-P256, entièrement hors ligne, avec la clé publique du fichier id_version.json inclus. Installez tigertag[verify] pour ajouter le paquet cryptography.

Créer, modifier, effacer

TigerTag.create() construit un tag de zéro, patch() renvoie un nouveau tag aux champs modifiés, erase() renvoie les 80 octets nuls qui effacent une puce. Modifier l'UID ou la signature lève ValueError.

Catalogue TigerTag+

TigerTag.from_catalog() transforme un ID produit TigerTag+ en tag complet prêt à écrire, depuis le catalogue officiel. catalog_entry() donne son titre, sa marque, son SKU et sa photo.

Mise à jour des données

Le premier TigerTagDB d'un processus cherche de nouvelles données au plus une fois par jour et ne lève jamais d'erreur : en cas d'échec, les données locales sont utilisées. tigertag update vérifie tout de suite.

Tout SDK NFC

from_pages(uid, payload) prend ce que renvoient Android, iOS, Flutter et nfcpy. Le README contient un exemple complet pour un lecteur ACR122U avec nfcpy.

Ligne de commande et fichier unique

La commande tigertag lit un dump de puce, l'affiche en texte, en JSON ou en champs bruts, et met à jour les données de référence.

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
Plus de détails dans le README

Un fichier, sans paquet

parse_tigertag.py est une copie autonome et complète du SDK pour les projets qui ne peuvent pas ajouter de dépendance : déposez le fichier et importez-en TigerTag.

parse_tigertag.py

Playground

Une page web locale qui construit, lit et vérifie des tags avec ce SDK, sans matériel. Avec un ACS ACR122U ou un autre lecteur PC/SC, elle lit et écrit aussi de vraies puces.

python3 tools/server.py 7432
Plus de détails dans le README

Questions

Qu'est-ce que le SDK Python TigerTag ?

Un paquet Python, tigertag sur PyPI, qui lit, vérifie, crée et modifie les puces NFC TigerTag des filaments et résines d'impression 3D. Il est open source sous licence Apache 2.0 et implémente le protocole TigerTag v2.2.

Comment l'installer ?

Lancez pip install tigertag avec Python 3.8 ou plus récent. Ajoutez tigertag[verify] pour les signatures, tigertag[full] pour toutes les dépendances optionnelles, ou tigertag[nfc] pour les lecteurs PC/SC du playground.

Faut-il une connexion internet ?

Non. Les données de référence sont livrées dans le paquet : lecture et vérification fonctionnent hors ligne. Depuis la version 1.3.0, le SDK cherche de nouvelles données au plus une fois par jour ; offline=True, TIGERTAG_OFFLINE=1 ou auto_update=False le désactive.

Quelles puces lit-il ?

Les puces NTAG213, NTAG215, NTAG216 et compatibles ISO 14443-3, avec les trois types de tag : TigerTag (Maker), TigerTag Init et TigerTag+. Le SDK lit les trois de la même façon.

Comment vérifie-t-il qu'une puce est authentique ?

tag.verify() vérifie la signature ECDSA-P256 de la puce, qui lie son UID aux données du produit, avec la clé publique incluse dans le paquet et sans appel serveur. Il faut l'UID : lisez la puce avec from_pages(uid, payload).

Peut-on l'utiliser sans installer de paquet ?

Oui. parse_tigertag.py, à la racine du dépôt, est une copie autonome complète : copiez le fichier dans votre projet et importez-en TigerTag.

Y a-t-il un outil en ligne de commande ?

Oui. tigertag dump.bin affiche un résumé lisible, --json du JSON et --raw les champs bruts du protocole ; tigertag update rafraîchit les données de référence, et python -m tigertag fonctionne de la même façon.

Lisez votre premier TigerTag en Python

pip install tigertag, puis TigerTag.from_pages(uid, payload).

tigertag sur PyPI