Android: аутентификация с NXP MiFare Ultralight C

Уже более недели я пытаюсь сделать так, чтобы телефон Android проходил аутентификацию с помощью Mifare Ultralight C. Я подтвердил, что могу писать в тег (записывая на незащищенную страницу памяти и затем читая то, что я написал). Я также могу написать на ключевые страницы (44-47) и записать 0x00 для всех 16 ключевых байтов.

Когда я пытаюсь аутентифицироваться, ниже приводится пример данных, задействованных во время одного обмена, - из журнала, написанного моим приложением. Может кто-нибудь сказать мне, если я делаю что-то неправильно? яAM под неразглашением и имеют доступ кполный листы данных. Обратите внимание, что шестнадцатеричные строки ниже - это, очевидно, удобочитаемые версии отправляемых и получаемых данных, которые в коде состоят из байтовых массивов.

Отправить команду аутентификации

Received rndB: 8A5735694D9D7542

Key: 00000000000000000000000000000000

IV: 0000000000000000

Decrypted rndB: EF340C62E1B866D4

rndB': 340C62E1B866D4EF

rndA: 6E262630E299F94F

rndA+rndB': 6E262630E299F94F340C62E1B866D4EF

Key: 00000000000000000000000000000000

IV: 8A5735694D9D7542

ek(RndA+rndB'): E36C6C46FAAC60BA45DDF5F5A0802C79

После отправки0xAF + E36C6C46FAAC60BA45DDF5F5A0802C79 Я сразу теряю связь с тегом. Я просмотрел таблицу данных и прочитал каждый пост, который смог найти здесь. Я также посмотрел код libfreefare и, честно говоря, не могу понять, что я делаю неправильно.

Техническая поддержка NXP была полностью безразлична.

Есть идеи? Я в растерянности.

Ответы на вопрос(1)

Ваш ответ на вопрос