Разрешение содержимого тега MiFare Ultralight NFC - PullRequest
0 голосов
/ 26 июня 2019

В настоящее время я работаю с 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). Что это?

1 Ответ

0 голосов
/ 26 июня 2019

Похоже, что они являются частью TLV управления блокировкой, частью стандарта NFC Type 2 Tag (страницы 10-11) .

Байты размещены как таковые:

  • 0x01 - Имя блока управления блокировкой TLV
  • 0x03 - Длина составляет 3 байта
  • 0xa0 - Кодирует позицию в тегеобласть блокировки в, состоит из двух полубайтов:
    • 0b0000 - старшие 4 бита представляют количество страниц, а младшие 4 бита - количество байтов
    • 0b1100 -количество битов, используемых в области блокировки.
  • 0x0c - указывает размер в битах области блокировки
  • 0x34 - количество байтов на страницеи число байтов, которое может блокировать каждый бит динамической блокировки.
...