Leia, verifique e escreva chips NFC 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.
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
O início rápido, tal como consta do README: uid e payload vêm do seu leitor NFC.
1.4.0Versão mais recente ·
3.8+Python 3.8 e posteriores
0Dependências do núcleo em execução: apenas a biblioteca padrão
144Bytes lidos por chip: páginas 0x04 a 0x27, dados e assinatura
Comece em três passos
O pacote tigertag está no PyPI. Instale-o, entregue-lhe o que o seu leitor NFC devolve e verifique a assinatura.
1
Instalar
Um só comando. O núcleo usa apenas a biblioteca padrão e os dados de referência estão incluídos: sem configuração e sem rede na primeira execução.
pip install tigertag
2
Ler um chip
Passe o UID de 7 bytes e o payload de 144 bytes devolvidos pelo seu SDK NFC. pretty(), to_dict() e validate() dão um resumo, um dict pronto para JSON e avisos.
from tigertag import TigerTag
tag = TigerTag.from_pages(uid, payload)
3
Verificar a assinatura
O extra verify acrescenta o pacote cryptography, para que tag.verify() verifique a assinatura ECDSA-P256 sem rede com a chave pública incluída no SDK.
pip install tigertag[verify]
Extras opcionais
sync acrescenta requests (as atualizações já funcionam com a biblioteca padrão), verify acrescenta cryptography para assinaturas, full instala ambos e nfc acrescenta pyscard para leitores PC/SC no 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)
Assinaturas e organização do chip
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).
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() 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.
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. Alterar o UID ou a assinatura lança ValueError.
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. tigertag update verifica de imediato.
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.
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.
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 é 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.
Uma página web local que cria, lê e verifica etiquetas com este SDK, sem hardware. Com um ACS ACR122U ou outro leitor PC/SC, também lê e escreve chips reais.
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, NTAG216 e chips compatíveis com ISO 14443-3, com os três tipos de etiqueta: TigerTag (Maker), TigerTag Init e TigerTag+. O SDK lê os três da mesma forma.
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).
Pode usar-se sem instalar um pacote?
Sim. parse_tigertag.py, na raiz do repositório, é uma cópia completa e autónoma: copie o ficheiro para o seu projeto e importe TigerTag a partir dele.
Existe uma ferramenta de linha de comandos?
Sim. tigertag dump.bin apresenta um resumo legível, --json apresenta JSON e --raw os campos em bruto do protocolo; tigertag update atualiza os dados de referência e python -m tigertag funciona da mesma forma.
Leia a sua primeira TigerTag em Python
pip install tigertag e, depois, TigerTag.from_pages(uid, payload).