SDK de código abierto · protocolo TigerTag v2.2

Lee, verifica y escribe chips TigerTag desde Python.

El paquete tigertag convierte los 144 bytes de un chip TigerTag en material, colores, temperaturas y cantidad, verifica su firma ECDSA-P256 y crea nuevas etiquetas. Los datos de referencia vienen dentro del paquete, así que funciona sin conexión justo después de 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 y posteriores
3.8+Python 3.8 y posteriores
Dependencias del núcleo en ejecución: solo la biblioteca estándar
0Dependencias del núcleo en ejecución: solo la biblioteca estándar
Bytes leídos por chip: páginas 0x04 a 0x27, datos y firma
144Bytes leídos por chip: páginas 0x04 a 0x27, datos y firma
Catálogo TigerTag+ incluido en el paquete, junto con las tablas de referencia, para trabajar sin conexión
~1 MBCatálogo TigerTag+ incluido en el paquete, junto con las tablas de referencia, para trabajar sin conexión

Qué hace el SDK

Todo lo que documenta el README, en un solo paquete que funciona sin conexión.

Primero sin conexión

Las tablas de referencia y el catálogo TigerTag+ (alrededor de 1 MB) vienen dentro del paquete. offline=True o TIGERTAG_OFFLINE=1 desactiva cualquier acceso a la red.

Verificación de firma

ECDSA-P256, totalmente sin conexión, con la clave pública del id_version.json incluido. Instala tigertag[verify] para añadir el paquete cryptography.

Crear, modificar, borrar

TigerTag.create() crea una etiqueta desde cero, patch() devuelve una nueva con campos cambiados, erase() devuelve los 80 bytes a cero que borran un chip.

Catálogo TigerTag+

TigerTag.from_catalog() convierte un ID de producto TigerTag+ en una etiqueta completa lista para escribir, desde el catálogo oficial. catalog_entry() da su título, marca, SKU y foto.

Actualización de datos

El primer TigerTagDB de un proceso busca datos nuevos como mucho una vez al día y nunca lanza errores: ante cualquier fallo se usan los datos locales.

Cualquier SDK NFC

from_pages(uid, payload) acepta lo que devuelven Android, iOS, Flutter y nfcpy. El README incluye un ejemplo completo para un lector ACR122U con nfcpy.

Firmas verificadas sin servidor

Un TigerTag firmado lleva una firma ECDSA-P256 que vincula el UID del chip con los datos del producto. El SDK la comprueba sin llamar a ningún servidor. tag.verify() devuelve un SignatureResult: ok es True solo con una firma válida, y status indica el motivo en otro caso (sin firma, sin cryptography, sin clave pública, sin UID).

A TigerTag chip

Qué lee el SDK

from_pages() acepta 144 bytes (páginas 0x04 a 0x27, datos y firma) u 80 bytes (solo datos). from_dump() también acepta un volcado completo de 180 bytes y extrae de él el UID.

TigerTag

Línea de comandos y archivo único

El comando tigertag lee un volcado de chip, lo muestra como texto, JSON o campos en bruto y actualiza los datos de referencia. parse_tigertag.py es una copia completa e independiente del SDK para proyectos que no pueden añadir dependencias: copia el archivo e importa TigerTag desde él.

Preguntas

¿Qué es el SDK Python de TigerTag?

Un paquete de Python, tigertag en PyPI, que lee, verifica, crea y modifica chips NFC TigerTag de filamento y resina para impresión 3D. Es de código abierto bajo la licencia Apache 2.0 e implementa el protocolo TigerTag v2.2.

¿Cómo se instala?

Ejecuta pip install tigertag con Python 3.8 o posterior. Añade tigertag[verify] para las firmas, tigertag[full] para todas las dependencias opcionales o tigertag[nfc] para los lectores PC/SC del playground.

¿Necesita conexión a internet?

No. Los datos de referencia vienen en el paquete, así que la lectura y la verificación funcionan sin conexión. Desde la versión 1.3.0 el SDK busca datos nuevos como mucho una vez al día; offline=True, TIGERTAG_OFFLINE=1 o auto_update=False lo desactiva.

¿Qué chips lee?

NTAG213, NTAG215 y NTAG216, y cualquier chip compatible con ISO 14443-3. Lee de la misma forma los chips TigerTag y TigerTag+ y los chips vírgenes listos para programar.

¿Cómo comprueba que un chip es auténtico?

tag.verify() comprueba la firma ECDSA-P256 del chip, que vincula su UID con los datos del producto, con la clave pública incluida en el paquete y sin llamar a un servidor. Necesita el UID: lee el chip con from_pages(uid, payload).

Lee tu primer TigerTag en Python

pip install tigertag y después TigerTag.from_pages(uid, payload).

tigertag en PyPI