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 была полностью безразлична.
Есть идеи? Я в растерянности.