TigerTag Python SDK

SDK open source · protokół TigerTag v2.2

TigerTag Python SDK

Odczytuj, weryfikuj i zapisuj chipy NFC 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.

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
Szybki start w wersji z README: uid i payload pochodzą z Twojego czytnika NFC.
1.4.0Najnowsze wydanie ·
3.8+Python 3.8 i nowszy
0Zależności rdzenia w czasie działania: tylko biblioteka standardowa
144Bajty odczytywane z chipu: strony 0x04 do 0x27, dane i podpis

Zacznij w trzech krokach

Pakiet tigertag jest w PyPI. Zainstaluj go, przekaż mu dane z czytnika NFC i sprawdź podpis.

  1. 1

    Instalacja

    Jedno polecenie. Rdzeń korzysta tylko z biblioteki standardowej, a dane referencyjne są dołączone: bez konfiguracji i bez sieci przy pierwszym uruchomieniu.

    pip install tigertag
  2. 2

    Odczyt chipu

    Przekaż 7-bajtowy UID i 144-bajtowy payload zwrócone przez SDK NFC. pretty(), to_dict() i validate() dają podsumowanie, słownik gotowy do JSON i ostrzeżenia.

    from tigertag import TigerTag
    tag = TigerTag.from_pages(uid, payload)
  3. 3

    Weryfikacja podpisu

    Dodatek verify instaluje pakiet cryptography, dzięki czemu tag.verify() sprawdza podpis ECDSA-P256 offline kluczem publicznym dołączonym do SDK.

    pip install tigertag[verify]

Dodatki opcjonalne

sync dodaje requests (aktualizacje działają już z biblioteką standardową), verify dodaje cryptography do podpisów, full instaluje oba, a nfc dodaje pyscard dla czytników PC/SC w playgroundzie.

pip install tigertag                    # core only — stdlib, works fully offline (data bundled)
pip install tigertag[sync]              # + requests (optional — updates use the standard library)
pip install tigertag[verify]            # + cryptography (ECDSA signature check)
pip install tigertag[full]              # everything
pip install "tigertag[nfc]"             # + pyscard (playground: ACR122U / PC/SC readers)

Podpisy i układ chipu

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).

result = tag.verify()    # fully autonomous — finds the public key from the bundled DB

result.ok       # True only for VALID
result.status   # "valid" | "invalid" | "unsigned" | "no_crypto" | "no_key" | "no_uid"
str(result)     # "VALID" | "INVALID" | "NOT SIGNED" | "NO CRYPTO — …" | "NO PUBLIC KEY — …" | "NO UID — …"
result.to_dict()# {"status": "valid", "ok": True, "detail": "…"}
Więcej w README

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.

Układ pamięci chipu NTAG TigerTag, strony 0x04 do 0x27, pole po polu Specyfikacja TigerTag

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. Zmiana UID lub podpisu zgłasza ValueError.

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. tigertag update sprawdza od razu.

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.

Wiersz poleceń i pojedynczy plik

Polecenie tigertag odczytuje zrzut chipu, wyświetla go jako tekst, JSON lub surowe pola i aktualizuje dane referencyjne.

tigertag dump.bin              # parse + human-readable output
tigertag dump.bin --json       # output as JSON
tigertag dump.bin --raw        # raw protocol fields, no DB lookup
tigertag update [--force]      # check for new reference data now (--catalog, --data-dir)
tigertag dump.bin --offline    # no network access at all
tigertag --version             # show SDK version

python -m tigertag dump.bin    # same, via module runner
Więcej w README

Jeden plik, bez pakietu

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.

parse_tigertag.py

Playground

Lokalna strona internetowa, która tworzy, odczytuje i weryfikuje tagi za pomocą tego SDK, bez sprzętu. Z czytnikiem ACS ACR122U lub innym PC/SC odczytuje i zapisuje też prawdziwe chipy.

python3 tools/server.py 7432
Więcej w README

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, NTAG216 i chipy zgodne z ISO 14443-3, z trzema typami tagów: TigerTag (Maker), TigerTag Init i TigerTag+. SDK odczytuje wszystkie trzy 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).

Czy można go używać bez instalowania pakietu?

Tak. parse_tigertag.py w katalogu głównym repozytorium to kompletna, samodzielna kopia: skopiuj plik do projektu i zaimportuj z niego TigerTag.

Czy jest narzędzie wiersza poleceń?

Tak. tigertag dump.bin wyświetla czytelne podsumowanie, --json zwraca JSON, a --raw surowe pola protokołu; tigertag update odświeża dane referencyjne, a python -m tigertag działa tak samo.

Odczytaj swój pierwszy TigerTag w Pythonie

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

tigertag w PyPI