Чтение правильных данных с браслета NFC с помощью NXP Mifare Ultralight в C

Я новичок в чтении устройств NFC, но мне удалось реализовать в моем собственном проекте код из nfc-mfultralight.c (libnfc).

Чего я не понимаю, так это того, что когда я читаю данные с браслета MIFARE Ultralight, я получаю много мусора.

Например, у меня в теге есть номер 255555574558888 (я использовал Android-устройство, чтобы записать этот номер в тег).

Теперь, когда я бегу:

nfc-mfultralight r /home/user/dump

я понимаю это

d▒r▒!▒ H▒▒U255555574558888▒-67644-67546-2346

Это из примеров libnfc, так не должна ли эта программа просто читать правильные данные? Приложение Android, которое я использую, просто видит значение 255555574558888. Значение -67644-67546-2346 является частью того, что я написал ранее.

Как мне узнать, какие именно данные мне нужно прочитать? Что нужно изменить в коде примера, чтобы он работал корректно?

Я использую ACR122 для чтения данных из тегов.

PS: Это мой первый проект с устройствами NFC, тегами libnfc и MIFARE Ultralight, так что если вы считаете, что мне следует прочитать, пожалуйста, сообщите мне.

Изменить 1

Итак, я нашел этот вопрос: Чтение карты NFC Mifare с помощью NXP Библиотека для чтения

Что, я думаю, немного помогает мне. Я распечатал шестнадцатеричное значение другой тестовой строки и получил это

04  64  13  fb
72  f7  21  84 
20  48  00  00
e1  11  06  00 
03  0a  d1  01
06  54  02  65 
6e  68  65  79
fe  00  00  79 
35  35  38  38
38  38  fe  00 
2d  36  37  36
34  34  2d  36 
37  35  34  36
2d  32  33  34
36  fe  00  00
00  00  00  00
00

Я вижу 3d, за которым следует 0a, а затем d1, но каковы все значения перед 3d? Это что-то из-за libnfc?


person AntonioCS    schedule 29.05.2014    source источник


Ответы (1)


Данные, которые вы видите на страницах 0 и 1 (байты от 0 до 7), являются UID карты. Страница 2 содержит данные карты (байты 8 и 9) и байты блокировки (байты 10 и 11). Страница 3 содержит контейнер возможностей (CC), указывающий, что этот тег отформатирован в соответствии со спецификацией операции тега NFC Forum Type 2 версии 1.1. Область пользовательских данных тега начинается на странице 4.

Поскольку этот тег соответствует спецификации операции тега NFC Forum, данные NDEF для него хранятся в объекте NDEF-TLV (тег 0x03, длина 0x0A). 0xD1 указывает на сообщение NDEF, состоящее из одной записи в коротком формате с типом записи NFC Forum. Тип записи «T» (0x54) означает, что это текстовая запись. Запись Text содержит определение языка «en» (английский) и текст «hey» (0x68 0x65 0x79). Область данных завершается Terminator-TLV (тег 0xFE, длина 0x00).

Кроме того, кажется, что данные из предыдущего сообщения NDEF были больше, чем текущее. Поскольку данные записываются страницами (4 байта), а область данных тега обычно не очищается при записи нового сообщения, старые данные по-прежнему доступны для чтения из тега.

Вы можете прочитать следующие спецификации на форуме NFC (они доступны на их веб-сайте):

  • Спецификация операции тега типа 2
  • Техническая спецификация формата обмена данными NFC (NDEF)
  • Техническая спецификация определения типа записи NFC (RTD)
  • Техническая спецификация NFC Text RTD
person Michael Roland    schedule 30.05.2014