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