SDK с открытым кодом · протокол TigerTag v2.2

Читайте, проверяйте и записывайте чипы TigerTag на Python.

Пакет tigertag превращает 144 байта чипа TigerTag в материал, цвета, температуры и количество, проверяет его подпись 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 МБКаталог TigerTag+ входит в пакет вместе со справочными таблицами, для работы без сети

Что умеет SDK

Всё, что описано в README, в одном пакете, работающем без сети.

Прежде всего без сети

Справочные таблицы и каталог TigerTag+ (около 1 МБ) входят в пакет. offline=True или TIGERTAG_OFFLINE=1 отключает любые сетевые запросы.

Проверка подписи

ECDSA-P256, полностью без сети, с открытым ключом из встроенного id_version.json. Установите tigertag[verify], чтобы добавить пакет cryptography.

Создание, изменение, стирание

TigerTag.create() создаёт метку с нуля, patch() возвращает новую метку с изменёнными полями, erase() возвращает 80 нулевых байт для стирания чипа.

Каталог TigerTag+

TigerTag.from_catalog() превращает идентификатор продукта TigerTag+ в полную метку, готовую к записи, по официальному каталогу. catalog_entry() даёт название, бренд, SKU и фото.

Обновление справочных данных

Первый TigerTagDB в процессе ищет новые данные не чаще раза в день и никогда не выбрасывает исключений: при любой ошибке используются локальные данные.

Любой NFC SDK

from_pages(uid, payload) принимает то, что возвращают Android, iOS, Flutter и nfcpy. В README есть полный пример для считывателя ACR122U с nfcpy.

Проверка подписи без сервера

Подписанный 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, 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).

Прочитайте свой первый TigerTag на Python

pip install tigertag, затем TigerTag.from_pages(uid, payload).

tigertag на PyPI