Получение UID/ серийного номера карты NXP MIFARE DESFire EV1

В настоящее время я делаю проект, в котором я хочу использовать свой телефон Windows 10 с поддержкой NFC, чтобы прочитать UID/ серийный номер смарт-карты, чтобы найти идентификатор человека. Карта, с которой я пытаюсь получить UID/ серийный номер, - это NXP MIFARE DESFire EV1. Идентификатор, который я ищу, напечатан на карте, и мне удалось получить к нему доступ с помощью телефона моего друга с помощью приложения для Android, что означает, что номер доступен, хотя я не знаю, как.

Я могу отправлять команды APDU на карту, но я не знаю, какую из них использовать, чтобы получить UID/ серийный номер, который я ищу.

Какие команды APDU мне нужно отправить на карту для получения идентификатора? Идентификатор, который я ищу, имеет длину 7 байт.

1 ответ

Решение

В общем, получение параметров, таких как идентификатор защиты от столкновений (UID) бесконтактных карт, очень сильно зависит от считывателя и уровней абстракции между считывателем и вашим приложением. Например, на Android есть простой метод getId() получить антиколлизионный идентификатор метки NFC / бесконтактной смарт-карты.

Однако для MIFARE DESFire есть также способ получить этот параметр с помощью APDU. Вы можете просто отправить команду GET VERSION для запроса информации о версии (а также UID карты):

C-APDU: 90 60 0000 00
R-APDU: 04 01 YY 01 00 ZZ 05 91AF

C-APDU: 90 AF 0000 00
R-APDU: 04 01 01 01 04 ZZ 05 91AF

C-APDU: 90 AF 0000 00
R-APDU: XXXXXXXXXXXXXX UUUUUUUUUU VV WW 9100

Значение XXXXXXXXXXXXXX UID карты (или всех нулей, если карта находится в режиме случайного идентификатора защиты от столкновений).

Обратите внимание, что здесь даже существует парсер для информации о версии MIFARE DESFire (как указал ThomasRS в комментарии).

Другие вопросы по тегам