Разрешение содержимого тега MiFare Ultralight NFC

В настоящее время я работаю с NFC/NDEF, и у меня возникла проблема, из-за которой я не могу понять поступающие данные. Я имею общее представление о стандарте NDEF и просмотрел таблицу данных MIFARE, поэтому я в состоянии выделить несколько вещей, но есть несколько байтов, которые кажутся неуместными и озадачивают меня.

Вот шестнадцатеричный дамп данных по тегу, собранный через nfc-mfultralight r:

00000000  04 02 2f a1 d2 11 5f 81  1d 48 00 00 e1 10 12 00  |../..._..H......|
00000010  01 03 a0 0c 34 03 1b 91  01 05 54 02 65 6e 68 69  |....4.....T.enhi|
00000020  11 01 05 54 02 65 6e 68  69 51 01 05 54 02 65 6e  |...T.enhiQ..T.en|
00000030  68 69 fe 00 00 00 00 00  00 00 00 00 00 00 00 00  |hi..............|

Я знаю, что первые 16 байтов (04 02 2f a1 d2 11 5f 81 1d 48 00 00 e1 10 12 00) — это заголовок NFC/MIFARE (первые 9 — это серийный номер/проверочные байты, 1 байт — внутренний, 2 — блокировка, а последние 4 — OTP-байты).

Начиная с байта 21 я вижу начало записи TLV с флагом Terminator TLV в конце (03 1b ... fe), указывающим на запись типа NDEF длиной 27. Это соответствует длине ожидаемой записи NDEF.

Однако меня смущают байты 16..20 (01 03 a0 0c 34). Что это?


person RPiAwesomeness    schedule 26.06.2019    source источник


Ответы (1)


Похоже, что это часть TLV управления блокировкой, часть Стандарт меток NFC Type 2 (стр. 10–11).

Байты расположены следующим образом:

  • 0x01 - Имя блока TLV управления блокировкой
  • 0x03 - длина 3 байта
  • 0xa0 - Encodes the position within the tag the lock area is at, composed of two nibbles:
    • 0b0000 - Higher 4 bits represent the number of pages, while the lower 4 bits are the number of bytes
    • 0b1100 — Количество битов, используемых в области блокировки.
  • 0x0c — указывает размер в битах области блокировки
  • 0x34 — указывает количество байтов на странице и количество байтов, которое может заблокировать каждый бит динамической блокировки.
person RPiAwesomeness    schedule 26.06.2019