Прежде всего без сети
Справочные таблицы и каталог TigerTag+ (около 1 МБ) входят в пакет. offline=True или TIGERTAG_OFFLINE=1 отключает любые сетевые запросы.
SDK с открытым кодом · протокол TigerTag v2.2
Пакет tigertag превращает 144 байта чипа TigerTag в материал, цвета, температуры и количество, проверяет его подпись ECDSA-P256 и создаёт новые метки. Справочные данные входят в пакет, поэтому всё работает без сети сразу после pip install.
$ 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Всё, что описано в README, в одном пакете, работающем без сети.
Справочные таблицы и каталог TigerTag+ (около 1 МБ) входят в пакет. offline=True или TIGERTAG_OFFLINE=1 отключает любые сетевые запросы.
ECDSA-P256, полностью без сети, с открытым ключом из встроенного id_version.json. Установите tigertag[verify], чтобы добавить пакет cryptography.
TigerTag.create() создаёт метку с нуля, patch() возвращает новую метку с изменёнными полями, erase() возвращает 80 нулевых байт для стирания чипа.
TigerTag.from_catalog() превращает идентификатор продукта TigerTag+ в полную метку, готовую к записи, по официальному каталогу. catalog_entry() даёт название, бренд, SKU и фото.
Первый TigerTagDB в процессе ищет новые данные не чаще раза в день и никогда не выбрасывает исключений: при любой ошибке используются локальные данные.
from_pages(uid, payload) принимает то, что возвращают Android, iOS, Flutter и nfcpy. В README есть полный пример для считывателя ACR122U с nfcpy.
Подписанный TigerTag несёт подпись ECDSA-P256, которая связывает UID чипа с данными продукта. SDK проверяет её без обращения к серверу. tag.verify() возвращает SignatureResult: ok равно True только для действительной подписи, а status иначе объясняет причину (нет подписи, не установлен cryptography, нет открытого ключа, нет UID).

from_pages() принимает 144 байта (страницы 0x04–0x27, данные и подпись) или 80 байт (только данные). from_dump() также принимает полный 180-байтовый дамп и берёт из него UID.

Команда tigertag разбирает дамп чипа, выводит его текстом, в JSON или сырыми полями и обновляет справочные данные. parse_tigertag.py — полная автономная копия SDK для проектов, которым нельзя добавлять зависимости: положите файл в проект и импортируйте из него TigerTag.
Пакет Python, tigertag на PyPI, который читает, проверяет, создаёт и изменяет NFC-чипы TigerTag для филамента и смолы для 3D-печати. Он распространяется с открытым кодом по лицензии Apache 2.0 и реализует протокол TigerTag v2.2.
Выполните pip install tigertag на Python 3.8 или новее. Добавьте tigertag[verify] для проверки подписей, tigertag[full] для всех необязательных зависимостей или tigertag[nfc] для PC/SC-считывателей в playground.
Нет. Справочные данные входят в пакет, поэтому чтение и проверка работают без сети. Начиная с версии 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).
pip install tigertag, затем TigerTag.from_pages(uid, payload).
tigertag на PyPI