开源 SDK · TigerTag 协议 v2.2

用 Python 读取、验证和写入 TigerTag 芯片。

tigertag 软件包把 TigerTag 芯片的 144 字节解析为材料、颜色、温度和数量,验证其 ECDSA-P256 签名,并可创建新标签。参考数据随软件包一起提供,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 及更高版本
3.8+Python 3.8 及更高版本
核心运行时依赖:仅标准库
0核心运行时依赖:仅标准库
每颗芯片读取的字节:第 0x04 至 0x27 页,数据与签名
144每颗芯片读取的字节:第 0x04 至 0x27 页,数据与签名
TigerTag+ 产品目录与参考数据表一起随软件包提供,可离线使用
~1 MBTigerTag+ 产品目录与参考数据表一起随软件包提供,可离线使用

SDK 的功能

README 中记录的全部功能,集中在一个可离线运行的软件包里。

离线优先

参考数据表和 TigerTag+ 产品目录(约 1 MB)随软件包提供。设置 offline=True 或 TIGERTAG_OFFLINE=1 即可关闭所有网络访问。

签名验证

ECDSA-P256,完全离线,使用内置 id_version.json 中的公钥。安装 tigertag[verify] 以添加 cryptography 包。

创建、修改、擦除

TigerTag.create() 从零构建标签,patch() 返回修改了字段的新标签,erase() 返回用于擦除芯片的 80 个零字节。

TigerTag+ 产品目录

TigerTag.from_catalog() 根据官方目录,把 TigerTag+ 产品 ID 转换为可直接写入的完整标签。catalog_entry() 提供其名称、品牌、SKU 和图片。

参考数据更新

进程中的第一个 TigerTagDB 每天最多检查一次新数据,且从不抛出异常:出现任何问题时使用本地数据。

兼容各类 NFC SDK

from_pages(uid, payload) 直接接受 Android、iOS、Flutter 和 nfcpy 返回的数据。README 中有使用 nfcpy 和 ACR122U 读卡器的完整示例。

无需服务器的签名验证

已签名的 TigerTag 带有 ECDSA-P256 签名,把芯片 UID 与产品数据绑定在一起。SDK 无需调用任何服务器即可验证。tag.verify() 返回 SignatureResult:只有签名有效时 ok 才为 True,否则 status 说明原因(无签名、未安装 cryptography、无公钥、无 UID)。

A TigerTag chip

SDK 读取的内容

from_pages() 接受 144 字节(第 0x04 至 0x27 页,数据与签名)或 80 字节(仅数据)。from_dump() 还接受 180 字节的完整转储,并从中提取 UID。

TigerTag

命令行与单文件

tigertag 命令可解析芯片转储,以文本、JSON 或原始字段输出,并更新参考数据。parse_tigertag.py 是 SDK 的完整独立副本,适用于无法添加依赖的项目:放入文件,从中导入 TigerTag 即可。

常见问题

什么是 TigerTag Python SDK?

一个 Python 软件包(PyPI 上的 tigertag),用于读取、验证、创建和修改 3D 打印耗材与树脂上的 TigerTag NFC 芯片。它基于 Apache License 2.0 开源,实现 TigerTag 协议 v2.2。

如何安装?

在 Python 3.8 或更高版本上运行 pip install tigertag。添加 tigertag[verify] 以验证签名,tigertag[full] 安装全部可选依赖,tigertag[nfc] 用于演示工具中的 PC/SC 读卡器。

需要联网吗?

不需要。参考数据随软件包提供,读取和验证都可离线完成。自 1.3.0 版起,SDK 每天最多检查一次新的参考数据;设置 offline=True、TIGERTAG_OFFLINE=1 或 auto_update=False 即可关闭。

支持哪些芯片?

NTAG213、NTAG215、NTAG216 以及任何兼容 ISO 14443-3 的芯片。TigerTag 和 TigerTag+ 芯片,以及待编程的空白芯片,都以相同方式读取。

如何验证芯片是正品?

tag.verify() 使用软件包内置的公钥检查芯片的 ECDSA-P256 签名(该签名把芯片 UID 与产品数据绑定),无需调用服务器。验证需要 UID,因此请用 from_pages(uid, payload) 读取芯片。

用 Python 读取你的第一个 TigerTag

pip install tigertag,然后调用 TigerTag.from_pages(uid, payload)。

PyPI 上的 tigertag