Чтение любого дампа
fromPages(), fromDump() и fromFile() принимают UID с 80 или 144 байтами либо полный дамп на 180 байт. pretty(), describe(), toDict() и toRawDict() возвращают текст, абзац простым языком или объекты, готовые для JSON.
Читайте, проверяйте и записывайте NFC-чипы TigerTag на JavaScript.
SDK открытого протокола TigerTag для филамента и смолы для 3D-печати: превращает байты чипа в материал, цвет, параметры печати и количество, проверяет его подпись ECDSA-P256 без сети и собирает новые метки байт за байтом.
npm install tigertag
const { TigerTag } = require('tigertag');
const tag = TigerTag.fromPages(uid, payload); // from your NFC SDK
console.log(tag.pretty()); // human-readable summary
console.log(String(tag.verify())); // VALID / NOT SIGNED / INVALID
console.log(tag.toDict()); // JSON-ready object
Установите пакет, прочитайте чип своей NFC-библиотекой, запишите новый. Встроенные справочные таблицы позволяют первому запуску работать без сети.
Из реестра npm. pnpm, yarn и bun устанавливают тот же пакет.
npm install tigertag
pnpm add tigertag
yarn add tigertag
bun add tigertagПередайте 7-байтовый UID и 144 байта, прочитанные NFC-библиотекой. Здесь — с nfc-pcsc и ACR122U.
// Node.js — nfc-pcsc (ACR122U / PN532)
reader.on('card', async (card) => {
const uid = Buffer.from(card.uid, 'hex'); // 7 bytes
const payload = await reader.read(4, 144, 4); // pages 4–39, 144 bytes
const tag = TigerTag.fromPages(uid, payload);
console.log(tag.pretty());
console.log(String(tag.verify())); // VALID / NOT SIGNED
});Каждое изменение возвращает новый TigerTag; toBytes() даёт байты для записи. erase() даёт пустой чип.
// Immutable surgical update — returns a new TigerTag, original unchanged
const patched = tag.patch({ nozzleTempMin: 200, dryTemp: 55 });
// Erase a chip — write the returned 80 bytes to the NFC chip
const blankBytes = TigerTag.erase();Один пакет для всего, что связано с чипом TigerTag: чтения, проверки, записи и обновления данных.
fromPages(), fromDump() и fromFile() принимают UID с 80 или 144 байтами либо полный дамп на 180 байт. pretty(), describe(), toDict() и toRawDict() возвращают текст, абзац простым языком или объекты, готовые для JSON.
verify() проверяет подпись ECDSA-P256, связывающую UID чипа с данными продукта, открытым ключом из пакета. Результат: valid, invalid, unsigned, no_key или no_uid.
create(), asInit(), patch() и erase() формируют байты чипа. TigerTag неизменяем: patch() возвращает новый объект и не позволяет менять idTigertag, idProduct, uid или подпись.
TigerTag.fromCatalog(productId) собирает полный TigerTag+ из официального каталога продуктов, который загружается при первом использовании и кешируется в папке пользователя.
Для чипов TigerTag+ методы rawApi(), diffApi() и patchFromApi() получают актуальные данные бренда, показывают отличия от чипа и применяют их.
Таблицы материалов, брендов, видов поверхности, типов, диаметров и единиц входят в пакет. Фоновая проверка обновляет их не чаще раза в сутки; offline: true или TIGERTAG_OFFLINE=1 означает ноль сетевых запросов.
SDK читает и записывает три типа меток протокола TigerTag v2.2 на чипах NTAG213, NTAG215 и NTAG216.
Все поля на чипе, читаются полностью без сети.
Пустой шаблон, готовый к программированию. Создаётся через TigerTag.asInit().
Все поля на чипе плюс идентификатор продукта, связанный с облачным API для обновлений от производителя. Подписанный чип проверяется через verify().
Пакет устанавливает команду tigertag и работает в главном процессе приложения Electron.
Разбирает дамп в текст, JSON или сырые поля и по запросу обновляет справочные таблицы.
# Parse a dump file
tigertag dump.bin
# JSON output
tigertag dump.bin --json
# Update the reference tables now (into the data dir)
tigertag updateРазбор чипов в главном процессе, без дополнительного подпроцесса.
// main.js — replace parseTigerTag() subprocess dependency
const { TigerTag, TigerTagDB } = require('tigertag');
function parseTigerTag(payload, uid) {
const tag = TigerTag.fromPages(Buffer.from(uid), Buffer.from(payload));
const db = new TigerTagDB();
return {
dict: tag.toDict(db),
raw: tag.toRawDict(),
sig: tag.verify(db).toDict(),
};
}Локальная веб-страница, которую обслуживает сам SDK: она собирает и декодирует чипы TigerTag и показывает каждый байт. NFC-оборудование не нужно.
npm run playground
# then open http://localhost:7432/tools/playground.html
# Enable live reader support (one-time install)
npm install ws nfc-pcsc
SDK реализует открытую спецификацию TigerTag наряду с другими официальными инструментами.
Открытая спецификация, которую реализует SDK: структура памяти, типы меток, схема подписи и справочная база данных.
Репозиторий: TigerTag-RFID-GuideВерсия для Python: чтение, проверка, запись и сравнение. Страница playground — один и тот же файл в обоих SDK.
Репозиторий: TigerTag-SDK-PythonОткрытое настольное приложение для учёта запасов под Windows, macOS и Linux, работает с TigerTag Pod и считывателями ACR122U.
Репозиторий: TigerTag-Studio-ManagerОфициальное мобильное приложение: чтение и запись чипов встроенным NFC телефона.
Выполните npm install tigertag, либо pnpm add tigertag, yarn add tigertag или bun add tigertag. Нужен Node.js 18 или новее; для чтения и проверки другие пакеты не нужны.
Нет. Справочные таблицы и открытый ключ подписи входят в пакет, поэтому чтение и проверка работают без сети. Сеть используется только для ежедневной проверки таблиц, каталога продуктов и облачных методов TigerTag+; offline: true или TIGERTAG_OFFLINE=1 её отключает.
TigerTag использует чипы NTAG213, NTAG215 и NTAG216 (ISO 14443-3). SDK принимает UID и байты, прочитанные вашей NFC-библиотекой, поэтому не привязан к одному считывателю; в README показан nfc-pcsc с ACR122U.
verify() проверяет подпись ECDSA-P256 чипа по его UID и идентификаторам продукта открытым ключом из пакета. Возвращает valid, invalid, unsigned (метка Maker), no_key или no_uid без обращения к серверу.
Он формирует байты: create(), patch(), asInit(), erase() и fromCatalog() дают TigerTag, чей toBytes() — содержимое, которое записывает ваша NFC-библиотека. Кнопка Burn в playground записывает его на чипы подключённых считывателей.
Да: TigerTag-SDK-Python — версия того же API для Python, и оба SDK обслуживают одну и ту же страницу playground.
Apache-2.0, с явным предоставлением патентных прав. Для реализации самого протокола TigerTag лицензия не требуется.
npm install tigertag, затем TigerTag.fromPages(uid, payload).