Справочная информация
Я изучал протоколы Mifare Classic 1K (S50). Большая часть данных взята из этого документа.
Я обнаружил, что команда аутентификации имеет значение 60 (с ключом A) или 61 (с ключом B), за которым следует 1 байт адреса (два байта CRC в этом вопросе игнорируются). Адрес — это номер блока, к которому вы хотите получить доступ. Например, Mifare Classic 1K имеет 16 секторов по 4 блока в каждом. Всего получается 64 блока.
Если я хочу пройти аутентификацию для блока 3 в секторе 0, адрес должен быть 0 * 4 + 3 = 3
, что равно 0x03; если я хочу пройти аутентификацию для блока 2 в секторе 12, адрес должен быть 12 * 4 + 2 = 50
, то есть 0x32. Любой адрес, больший или равный 64 (0x40), должен быть отклонен, потому что у Mifare 1K не так много блоков.
Однако я заметил, что блоки данных можно настроить как блоки значений. В конце блока 4 байта являются значением адреса (3 из 4 байтов являются резервными значениями для адреса).
Вопрос
Я запутался, но на самом деле я не могу это проверить: если я установлю адрес блока значений (скажем, это блок 2 сектора 12, то есть 0x32) равным 0x41, могу ли я аутентифицировать этот блок, отправив команду 0x60 0x41
? Если бы я мог, могу ли я подтвердить подлинность этого блока, отправив 0x60 0x32
?
Заранее спасибо! Если мое описание сбивает с толку, пожалуйста, оставьте сообщение!
Нет, аутентификация не меняется путем установки байтов адреса, считайте байты адреса информационным дополнением к хранимому значению.
Ничто в протоколе Mifare не будет разрешать адрес или делать что-то с данными, на которые указывают автоматически. Байт — это просто подсказка для интеллектуального приложения, где искать в аварийном случае.