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.
from tigertag import TigerTag
tag = TigerTag.from_pages(uid, payload) # from your NFC SDKprint(tag.pretty()) # human-readable summaryprint(tag.verify()) # VALID / NOT SIGNED / INVALIDprint(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
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
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
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] # everythingpip 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": "…"}
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.
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 outputtigertag dump.bin --json # output as JSONtigertag dump.bin --raw # raw protocol fields, no DB lookuptigertag update [--force] # check for new reference data now (--catalog, --data-dir)tigertag dump.bin --offline # no network access at alltigertag --version # show SDK versionpython -m tigertag dump.bin # same, via module runner
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.
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.
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).