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

Leia, verifique e escreva chips TigerTag em Python.

O pacote tigertag converte os 144 bytes de um chip TigerTag em material, cores, temperaturas e quantidade, verifica a respetiva assinatura ECDSA-P256 e cria novas etiquetas. Os dados de referência vêm dentro do pacote, por isso funciona sem rede 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 e posteriores
3.8+Python 3.8 e posteriores
Dependências do núcleo em execução: apenas a biblioteca padrão
0Dependências do núcleo em execução: apenas 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 utilização sem rede
~1 MBCatálogo TigerTag+ incluído no pacote, com as tabelas de referência, para utilização sem rede

O que o SDK faz

Tudo o que o README documenta, num único pacote que funciona sem rede.

Sem rede, à partida

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 todo o acesso à rede.

Verificação de assinatura

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

Criar, alterar, apagar

TigerTag.create() cria uma etiqueta de raiz, patch() devolve uma nova etiqueta com campos alterados, erase() devolve os 80 bytes a zero que apagam um chip.

Catálogo TigerTag+

TigerTag.from_catalog() converte um ID de produto TigerTag+ numa etiqueta completa pronta a escrever, a partir do catálogo oficial. catalog_entry() fornece título, marca, SKU e fotografia.

Atualização dos dados

O primeiro TigerTagDB de um processo procura dados novos no máximo uma vez por dia e nunca lança erros: perante qualquer falha, usa os dados locais.

Qualquer SDK NFC

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

Assinaturas verificadas sem servidor

Uma TigerTag assinada contém uma assinatura ECDSA-P256 que associa o UID do chip aos dados do produto. O SDK verifica-a sem contactar qualquer servidor. tag.verify() devolve um SignatureResult: ok é True apenas para uma assinatura válida e, caso contrário, status indica o motivo (sem assinatura, cryptography em falta, 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 (apenas dados). from_dump() aceita também um dump completo de 180 bytes e extrai dele o UID.

TigerTag

Linha de comandos e ficheiro único

O comando tigertag lê o dump de um chip, apresenta-o em texto, JSON ou campos em bruto e atualiza os dados de referência. parse_tigertag.py é uma cópia completa e autónoma do SDK para projetos que não podem acrescentar dependências: coloque o ficheiro no projeto e importe TigerTag a partir dele.

Perguntas

O que é o SDK Python 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 se instala?

Execute pip install tigertag com Python 3.8 ou posterior. Acrescente tigertag[verify] para assinaturas, tigertag[full] para todas as dependências opcionais ou tigertag[nfc] para os leitores PC/SC do playground.

É preciso ligação à internet?

Não. Os dados de referência vêm no pacote, pelo que a leitura e a verificação funcionam sem rede. 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 desativa-o.

Que chips lê?

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

Como verifica que um chip é autêntico?

tag.verify() verifica a assinatura ECDSA-P256 do chip, que associa o seu UID aos dados do produto, com a chave pública incluída no pacote e sem contactar um servidor. É necessário o UID: leia o chip com from_pages(uid, payload).

Leia a sua primeira TigerTag em Python

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

tigertag no PyPI