SDK open source · protocole TigerTag v2.2

Lire, vérifier, écrire des puces 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.

PyPI ↗GitHub ↗

$ 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
Python 3.8 et suivants
3.8+Python 3.8 et suivants
Dépendances du cœur à l'exécution : bibliothèque standard uniquement
0Dépendances du cœur à l'exécution : bibliothèque standard uniquement
Octets lus par puce : pages 0x04 à 0x27, données et signature
144Octets lus par puce : pages 0x04 à 0x27, données et signature
Catalogue TigerTag+ inclus dans le paquet, avec les tables de référence, pour travailler hors ligne
~1 MoCatalogue TigerTag+ inclus dans le paquet, avec les tables de référence, pour travailler hors ligne

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.

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.

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.

Des signatures vérifiées sans serveur

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

A TigerTag chip

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.

TigerTag

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

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 NTAG213, NTAG215 et NTAG216, et toute puce compatible ISO 14443-3. Il lit de la même façon les puces TigerTag et TigerTag+, et les puces vierges prêtes à programmer.

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

Lisez votre premier TigerTag en Python

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

tigertag sur PyPI