2017-11-14 3 views
0

Ich versuche, NDEF-Datensätze aus einigen NTAG213 & NTAG216 NFC-Tags zu lesen, und ich scheinen einige zusätzliche Bytes in den Benutzerspeicher bekomme ich nicht erwartet.NFC-Tag Benutzer Speicher binär

Basierend auf der spec, sollte der Benutzerspeicher von Block 4 beginnen, aber wenn ich von den NTAG213-Tags lese, sehe ich 7 zusätzliche Bytes vor dem NDEF-Datensatzanfang und 2 zusätzliche Bytes für die NTAG216-Tags.

Hier ist das Beispiel des NTAG213 Speichers:

01| 04 ae f4 d6 
02| 0a d7 49 80 
03| 14 48 00 00 
04| e1 10 6d 00 
05| 03 db 91 01 <-- NDEF starts at 91? 
06| 1a 54 02 65 
07| 6e 43 4f 43 
08| 4f 4e 55 54 
09| 20 42 4f 44 
10| 59 20 4d 49 
11| ... 

Der NDEF Datensatz wird mit dem Header-Byte (91) im Block 05, anstatt der Start am Block 04.

jemand starten Does wissen, wofür die zusätzlichen Bytes sind, oder wie kann ich sagen, was der Offset sein sollte, um nur die NDEF-Daten zurückzulesen?

Die Bytes sehen ein bisschen wie "Speicherinhalt bei Lieferung" aus. Aber ich bin mir nicht sicher, was der Zweck ist.

Antwort

1

Die Speicherung von NDEF-Daten auf Typ 2-Tags wird durch die NFC Forum Type 2-Tag-Spezifikation definiert. Diese Spezifikation definiert, dass die ersten vier Byte des Benutzerspeichers (vierte Seite) die NDEF-Fähigkeiten des Tags beschreiben und dass die folgenden Bytes eine Folge von Typ-Length-Value (TLV) -Konstrukten enthalten, eines davon (T = 3) ist die NDEF-Nachrichten-TLV, die die tatsächlichen NDEF-Daten enthält. Andere TLVs beschreiben Speicherstellen, die kennungsspezifische Daten wie Sperrbytes enthalten und müssen beim Lesen oder Schreiben von NDEF-Daten übersprungen werden.

Ihr Beispielinhalt ist ein NTAG216 (nicht NTAG213). Der Inhalt der vierten Seite ist ein magisches Byte (0xE1), das das NDEF-Format angibt, gefolgt von der NDEF-Mapping-Version (0x10 => Version 1.0), gefolgt von der Raw-Tag-Kapazität in Vielfachen von 8 (0x6D * 8) == 872 Byte Benutzerdaten), gefolgt von den Lese-/Schreibberechtigungen (0x00 => lesbar und schreibbar ohne Einschränkungen).

Die fünfte Seite beginnt mit dem NDEF-TLV-Typ (0x03 => NDEF-Nachricht), gefolgt von der TLV-Länge (0xDB == 219 Byte), die die TLV-Wertfeldgröße angibt. Die folgenden Bytes sind die tatsächlichen NDEF-Nachrichtendaten, aber beachten Sie, dass dies für einige Tags möglicherweise kein zusammenhängender Speicher ist (andere TLVs können Speicherbytes angeben, die beim Lesen oder Schreiben übersprungen werden müssen).

Für alle Schnickschnack können Sie eine ndef read und ndef write studieren oder eine Kopie der Typ 2 Tag-Spezifikation von der NFC Forum specifications page erhalten.

+0

Danke Stephen. Die TLV war das fehlende Teil des Puzzles. Und wie du schon sagtest, habe ich in meinem Beispiel den Inhalt des falschen Tags eingefügt (NTAG216). Ich nummerierte auch die Zeilen beginnend bei 1, nicht 0. Der NTAG213, den ich habe, hat tatsächlich zwei TLV-Blöcke im User-Mem-Space, was auch für mich verwirrend war. – Emlyn