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

Leia, verifique e grave chips TigerTag com Python.

O pacote tigertag transforma os 144 bytes de um chip TigerTag em material, cores, temperaturas e quantidade, verifica a assinatura ECDSA-P256 e cria novas tags. Os dados de referência vêm dentro do pacote, então tudo funciona sem internet logo após o 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 ou mais recente
3.8+Python 3.8 ou mais recente
Dependências do núcleo em execução: só a biblioteca padrão
0Dependências do núcleo em execução: só a biblioteca padrão
Bytes lidos por chip: páginas 0x04 a 0x27, dados e assinatura
144Bytes lidos por chip: páginas 0x04 a 0x27, dados e assinatura
Catálogo TigerTag+ incluído no pacote, com as tabelas de referência, para uso sem internet
~1 MBCatálogo TigerTag+ incluído no pacote, com as tabelas de referência, para uso sem internet

O que o SDK faz

Tudo o que o README documenta, em um único pacote que funciona sem internet.

Sem internet em primeiro lugar

As tabelas de referência e o catálogo TigerTag+ (cerca de 1 MB) vêm dentro do pacote. offline=True ou TIGERTAG_OFFLINE=1 desliga qualquer acesso à rede.

Verificação de assinatura

ECDSA-P256, totalmente sem internet, com a chave pública do id_version.json incluído. Instale tigertag[verify] para adicionar o pacote cryptography.

Criar, alterar, apagar

TigerTag.create() cria uma tag do zero, patch() retorna uma nova tag com campos alterados, erase() retorna os 80 bytes zerados que apagam um chip.

Catálogo TigerTag+

TigerTag.from_catalog() transforma um ID de produto TigerTag+ em uma tag completa pronta para gravar, a partir do catálogo oficial. catalog_entry() traz título, marca, SKU e foto.

Atualização dos dados

O primeiro TigerTagDB de um processo procura dados novos no máximo uma vez por dia e nunca gera erro: em qualquer falha, usa os dados locais.

Qualquer SDK NFC

from_pages(uid, payload) aceita o que Android, iOS, Flutter e nfcpy retornam. O README tem um exemplo completo para um leitor ACR122U com nfcpy.

Assinaturas verificadas sem servidor

Uma TigerTag assinada traz uma assinatura ECDSA-P256 que liga o UID do chip aos dados do produto. O SDK a verifica sem chamar nenhum servidor. tag.verify() retorna um SignatureResult: ok é True só para uma assinatura válida, e status explica o motivo nos outros casos (sem assinatura, sem cryptography, sem chave pública, sem UID).

A TigerTag chip

O que o SDK lê

from_pages() aceita 144 bytes (páginas 0x04 a 0x27, dados e assinatura) ou 80 bytes (só dados). from_dump() aceita também um dump completo de 180 bytes e extrai dele o UID.

TigerTag

Linha de comando e arquivo único

O comando tigertag lê o dump de um chip, mostra como texto, JSON ou campos brutos e atualiza os dados de referência. parse_tigertag.py é uma cópia completa e independente do SDK para projetos que não podem adicionar dependências: coloque o arquivo no projeto e importe TigerTag dele.

Perguntas

O que é o SDK Python do TigerTag?

Um pacote Python, tigertag no PyPI, que lê, verifica, cria e altera chips NFC TigerTag de filamentos e resinas para impressão 3D. É de código aberto sob a licença Apache 2.0 e implementa o protocolo TigerTag v2.2.

Como instalar?

Rode pip install tigertag no Python 3.8 ou mais recente. Adicione tigertag[verify] para assinaturas, tigertag[full] para todas as dependências opcionais ou tigertag[nfc] para os leitores PC/SC do playground.

Precisa de conexão com a internet?

Não. Os dados de referência vêm no pacote, então leitura e verificação funcionam sem internet. Desde a versão 1.3.0 o SDK procura dados novos no máximo uma vez por dia; offline=True, TIGERTAG_OFFLINE=1 ou auto_update=False desliga isso.

Quais chips ele lê?

NTAG213, NTAG215 e NTAG216, e qualquer chip compatível com ISO 14443-3. Ele lê da mesma forma chips TigerTag e TigerTag+ e chips virgens prontos para programar.

Como ele confere se um chip é autêntico?

tag.verify() confere a assinatura ECDSA-P256 do chip, que liga o UID aos dados do produto, com a chave pública incluída no pacote e sem chamar servidor. É preciso o UID: leia o chip com from_pages(uid, payload).

Leia sua primeira TigerTag com Python

pip install tigertag e depois TigerTag.from_pages(uid, payload).

tigertag no PyPI