SDK open source · protokół TigerTag v2.2

Odczytuj, weryfikuj i zapisuj chipy TigerTag w Pythonie.

Pakiet tigertag zamienia 144 bajty chipu TigerTag na materiał, kolory, temperatury i ilość, sprawdza jego podpis ECDSA-P256 i tworzy nowe tagi. Dane referencyjne są dołączone do pakietu, więc działa offline zaraz po 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 i nowszy
3.8+Python 3.8 i nowszy
Zależności rdzenia w czasie działania: tylko biblioteka standardowa
0Zależności rdzenia w czasie działania: tylko biblioteka standardowa
Bajty odczytywane z chipu: strony 0x04 do 0x27, dane i podpis
144Bajty odczytywane z chipu: strony 0x04 do 0x27, dane i podpis
Katalog TigerTag+ dołączony do pakietu razem z tabelami referencyjnymi, do pracy offline
~1 MBKatalog TigerTag+ dołączony do pakietu razem z tabelami referencyjnymi, do pracy offline

Co potrafi SDK

Wszystko, co opisuje README, w jednym pakiecie działającym offline.

Najpierw offline

Tabele referencyjne i katalog TigerTag+ (około 1 MB) są dołączone do pakietu. offline=True lub TIGERTAG_OFFLINE=1 wyłącza każde połączenie sieciowe.

Weryfikacja podpisu

ECDSA-P256, całkowicie offline, z kluczem publicznym z dołączonego pliku id_version.json. Zainstaluj tigertag[verify], aby dodać pakiet cryptography.

Tworzenie, zmiana, kasowanie

TigerTag.create() tworzy tag od zera, patch() zwraca nowy tag ze zmienionymi polami, erase() zwraca 80 bajtów zerowych, które kasują chip.

Katalog TigerTag+

TigerTag.from_catalog() zamienia identyfikator produktu TigerTag+ w kompletny tag gotowy do zapisu, na podstawie oficjalnego katalogu. catalog_entry() podaje nazwę, markę, SKU i zdjęcie.

Aktualizacja danych

Pierwszy TigerTagDB w procesie sprawdza nowe dane najwyżej raz dziennie i nigdy nie zgłasza błędu: przy każdym problemie używa danych lokalnych.

Dowolne SDK NFC

from_pages(uid, payload) przyjmuje to, co zwracają Android, iOS, Flutter i nfcpy. W README jest kompletny przykład dla czytnika ACR122U z nfcpy.

Podpisy sprawdzane bez serwera

Podpisany TigerTag zawiera podpis ECDSA-P256, który wiąże UID chipu z danymi produktu. SDK sprawdza go bez łączenia się z serwerem. tag.verify() zwraca SignatureResult: ok ma wartość True tylko dla poprawnego podpisu, a status w innych przypadkach podaje przyczynę (brak podpisu, brak cryptography, brak klucza publicznego, brak UID).

A TigerTag chip

Co odczytuje SDK

from_pages() przyjmuje 144 bajty (strony 0x04 do 0x27, dane i podpis) lub 80 bajtów (tylko dane). from_dump() przyjmuje też pełny 180-bajtowy zrzut i pobiera z niego UID.

TigerTag

Wiersz poleceń i pojedynczy plik

Polecenie tigertag odczytuje zrzut chipu, wyświetla go jako tekst, JSON lub surowe pola i aktualizuje dane referencyjne. parse_tigertag.py to kompletna, samodzielna kopia SDK dla projektów, które nie mogą dodać zależności: wrzuć plik do projektu i zaimportuj z niego TigerTag.

Pytania

Czym jest TigerTag Python SDK?

To pakiet Pythona, tigertag w PyPI, który odczytuje, weryfikuje, tworzy i zmienia chipy NFC TigerTag dla filamentów i żywic do druku 3D. Jest otwartoźródłowy na licencji Apache 2.0 i implementuje protokół TigerTag v2.2.

Jak go zainstalować?

Uruchom pip install tigertag w Pythonie 3.8 lub nowszym. Dodaj tigertag[verify] do podpisów, tigertag[full] dla wszystkich opcjonalnych zależności albo tigertag[nfc] dla czytników PC/SC w playgroundzie.

Czy potrzebne jest połączenie z internetem?

Nie. Dane referencyjne są w pakiecie, więc odczyt i weryfikacja działają offline. Od wersji 1.3.0 SDK sprawdza nowe dane referencyjne najwyżej raz dziennie; offline=True, TIGERTAG_OFFLINE=1 lub auto_update=False to wyłącza.

Jakie chipy odczytuje?

NTAG213, NTAG215 i NTAG216 oraz każdy chip zgodny z ISO 14443-3. Chipy TigerTag i TigerTag+ oraz puste chipy gotowe do zaprogramowania odczytuje w ten sam sposób.

Jak sprawdza, czy chip jest oryginalny?

tag.verify() sprawdza podpis ECDSA-P256 chipu, który wiąże jego UID z danymi produktu, kluczem publicznym dołączonym do pakietu i bez łączenia się z serwerem. Potrzebny jest UID, więc odczytaj chip przez from_pages(uid, payload).

Odczytaj swój pierwszy TigerTag w Pythonie

pip install tigertag, a potem TigerTag.from_pages(uid, payload).

tigertag w PyPI