TigerTag Python SDK

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

TigerTag Python SDK

Lee, verifica y escribe chips NFC 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.

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
El inicio rápido, tal como lo da el README: uid y payload vienen de tu lector NFC.
1.4.0Última versión ·
3.8+Python 3.8 y posteriores
0Dependencias del núcleo en ejecución: solo la biblioteca estándar
144Bytes leídos por chip: páginas 0x04 a 0x27, datos y firma

Empieza en tres pasos

El paquete tigertag está en PyPI. Instálalo, pásale lo que devuelve tu lector NFC y verifica la firma.

  1. 1

    Instalar

    Un solo comando. El núcleo usa solo la biblioteca estándar y los datos de referencia vienen incluidos: sin configuración y sin red en el primer arranque.

    pip install tigertag
  2. 2

    Leer un chip

    Pasa el UID de 7 bytes y el payload de 144 bytes que devuelve tu SDK NFC. pretty(), to_dict() y validate() dan un resumen, un dict listo para JSON y avisos.

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

    Verificar la firma

    El extra verify añade el paquete cryptography, para que tag.verify() compruebe la firma ECDSA-P256 sin conexión con la clave pública incluida en el SDK.

    pip install tigertag[verify]

Extras opcionales

sync añade requests (las actualizaciones ya funcionan con la biblioteca estándar), verify añade cryptography para las firmas, full instala ambos y nfc añade pyscard para lectores PC/SC en el 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)

Firmas y estructura del chip

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

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": "…"}
Más en el README

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.

Estructura de memoria de un chip NTAG TigerTag, páginas 0x04 a 0x27, campo por campo La especificación TigerTag

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. Cambiar el UID o la firma lanza ValueError.

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. tigertag update comprueba al momento.

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.

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.

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
Más en el README

Un archivo, sin paquete

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.

parse_tigertag.py

Playground

Una página web local que crea, lee y verifica etiquetas con este SDK, sin hardware. Con un ACS ACR122U u otro lector PC/SC, también lee y escribe chips reales.

python3 tools/server.py 7432
Más en el README

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, NTAG216 y chips compatibles con ISO 14443-3, con los tres tipos de etiqueta: TigerTag (Maker), TigerTag Init y TigerTag+. El SDK lee los tres de la misma forma.

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

¿Se puede usar sin instalar un paquete?

Sí. parse_tigertag.py, en la raíz del repositorio, es una copia completa e independiente: copia el archivo en tu proyecto e importa TigerTag desde él.

¿Hay una herramienta de línea de comandos?

Sí. tigertag dump.bin muestra un resumen legible, --json muestra JSON y --raw los campos en bruto del protocolo; tigertag update actualiza los datos de referencia y python -m tigertag funciona igual.

Lee tu primer TigerTag en Python

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

tigertag en PyPI