Zunächst einmal NXP proprietär NDEF Mapping für MIFARE Classic-Tags wird in diesen beiden Anwendungshinweisen angegeben:
Wie Sie bereits gefunden (Unable to authenticate to a MIFARE Classic tag used as NDEF tag), das NDEF-Daten werden in den Datenblöcken bestimmter Sektoren gespeichert (die NDEF-Sektoren, die als solche mit der MIFARE Application Directory markiert sind). Daher sind die für NDEF relevanten Daten die Kombination aller Daten aus diesen Blöcken.
z. Wenn Ihre NDEF-Sektoren Sektor 1 und 2 sind, müssten Sie die Blöcke 4, 5, 6 (= Blöcke 0..2 des Sektors 1) und die Blöcke 8, 9, 10 (= Blöcke 0..2 des Sektors 2) lesen. um die Daten des NDEF-Tags zu aggregieren.
In Ihrem Fall scheinen die Daten aus den Blöcken 4 und 5 ausreichend zu sein (da das Ende der Tag-Daten in Block 5 markiert ist, wie Sie selbst richtig gefunden haben). Die entsprechenden Tag-Daten in Ihrem Fall sind
0000030E D1010A54 02656E6D 6F726574
746FFE00 00000000 00000000 00000000
Die Tag-Daten selbst in TLV verpackt (Tag-Länge-Wert) Strukturen.Ein TLV-Block besteht aus einem obligatorischen Tag Byte, ein bedingten Längenfeld und ein optionalen Datenfeld:
- TLVs, die Länge und keine Daten Felder hat:
+----------+
| TAG |
| (1 byte) |
+----------+
- TLVs, wo das Datenfeld eine Länge von 0 bis 254 Bytes:
+----------+----------+-----------+
| TAG | LENGHT n | DATA |
| (1 byte) | (1 byte) | (n bytes) |
+----------+----------+-----------+
- TLVs wobei das Datenfeld eine Länge von 255 bis 65.534 Bytes hat:
+----------+----------+-----------+-----------+
| TAG | 0xFF | LENGHT n | DATA |
| (1 byte) | (1 byte) | (2 bytes) | (n bytes) |
+----------+----------+-----------+-----------+
Die interessanten Tags in Ihrem speziellen Fall sind:
- NULL TLV: Tag =
0x00
, kein Längenfeld, kein Datenfeld
- Terminator TLV: Tag =
0xFE
, kein Längenfeld, kein Datenfeld
- NDEF Nachricht TLV: Tag =
0x03
, hat Feld, hat Datenfeld (kann jedoch die Länge Null haben)
in Ihrem Fall Folglich decodiert die Daten auf:
00 NULL TLV (ignore, process next byte)
00 NULL TLV (ignore, process next byte)
03 NDEF Message TLV (contains your NDEF message)
0E Lenght = 14 bytes
D1010A5402656E6D6F726574746F Data = NDEF Message
FE Terminator TLV (stop processing the data)
Eine NDEF-Nachricht kann aus 0, 1 oder mehr NDEF-Datensätzen bestehen. In Ihrem Fall decodiert die NDEF Nachricht an folgenden:.
D1 Record header (of first and only record)
Bit 7 = MB = 1: first record of NDEF message
Bit 6 = ME = 1: last record of NDEF message
Bit 5 = CF = 0: last or only record of chain
Bit 4 = SR = 1: short record length field
Bit 3 = IL = 0: no ID/ID length fields
Bit 2..0 = TNF = 0x1: Type field represents an NFC Forum
well-known type name
01 Type Length = 1 byte
0A Payload length = 10 bytes
54 Type field (decoded according to the setting of TNF)
"T" (in US-ASCII) = binary form of type name urn:nfc:wkt:T
02656E6D6F726574746F Payload field (decoded according to the value of the Type field)
Daher Ihre NDEF Nachricht von einem Text Datensatz besteht (NFC Fórum bekannten Typ mit der Datennutzlast 02656E6D6F726574746F
Diese Rekord-Nutzlast decodiert:
02 Status byte
Bit 7 = 0: Text is UTF-8 encoded
Bit 6 = 0: Not used
Bit 5..0 = 0x02: Length of IANA language code field
656E IANA language code field
"en" (in US-ASCII) = Text is in English
6D6F726574746F Text
"moretto" (in UTF-8)