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.
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
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
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
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
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] # everythingpip 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": "…"}
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.
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 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 es una copia completa e independiente del SDK para proyectos que no pueden añadir dependencias: copia el archivo e importa TigerTag desde él.
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.
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).