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.
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
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
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
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
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] # everythingpip 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": "…"}
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.
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 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 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.
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.
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).