Перейти к содержанию
    

futures

Новичок
  • Постов

    2
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Реализация этой команды нашлась в проекте libnfс, в утилите nfc-mfclassic. Там есть функция get_rats, которая используется, возможно, для получения подробностей о типе карты. Судя по коду, карточке передаётся команда E0 50 через функцию считывателя InCommunicateThru. // настройка считывателя >>> [ 9] 00 00 FF 03 FD D4 14 01 17 <<< [ 15] 00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00 // вызов функции InListPassiveTarget для поиска карточки >>> [ 10] 00 00 FF 04 FC D4 4A 01 00 E1 <<< [ 28] 00 00 FF 00 FF 00 00 00 FF 0F F1 D5 4B 01 01 00 44 08 07 04 84 3A F2 D5 76 80 0C 00 // ответ от карты, SAK=8 (8, 7, '\x04\x84:\xf2\xd5v\x80') // функция RATS >>> [ 10] 00 00 FF 04 FC D4 42 E0 50 BA // ответ от карточки, Historical bytes <<< [ 28] 00 00 FF 00 FF 00 00 00 FF 0F F1 D5 43 00 0C 75 77 80 02 C1 05 21 30 00 77 C1 1F 00 // После RATS пробуем снова обратиться к карточке >>> [ 10] 00 00 FF 04 FC D4 4A 01 00 E1 // Но считыватель ее не видит <<< [ 16] 00 00 FF 00 FF 00 00 00 FF 03 FD D5 4B 00 E0 00 (0, 0, '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') // авторизация в сектор 9003 завершается ошибкой >>> [ 12] 00 00 FF 06 FA D4 40 01 70 03 90 E8 <<< [ 16] 00 00 FF 00 FF 00 00 00 FF 03 FD D5 41 27 C3 00 Кроме этого, в проекте libnfc (в файле nfc-anticol.c) встречается еще такая форма вызова команды RATS uint8_t abtRats[4] = { 0xe0, 0x50, 0x00, 0x00 }; ... if ((abtRx[0] & SAK_FLAG_ATS_SUPPORTED) || force_rats) { iso14443a_crc_append(abtRats, 2); if (transmit_bytes(abtRats, 4)) { memcpy(abtAts, abtRx, szRx); szAts = szRx; } } Тут используется еще добавление контрольной суммы к команде.
  2. Добрый день Есть новые карты Mifare Plus 2K в режиме SL0. Для них получилось по инструкциям выше задать служебные пароли и пароли от секторов (через команды WritePerso и CommitPerso). У карт теперь поменялся SAK c 0x20 на 0x08. Как я понимаю карта теперь работает в режиме SL1. Как её можно перевести в режим SL3? Нужно в сектор записать значение и потом работать с этой картой в режиме SL3. Из того, что удавалось найти в сети, написано, что нужно активировать протокол 14443-4, выполнить команду RATS и после этого авторизоваться в сектор 0х9003 с ключом который был задан через WritePerso. Тут как бы упоминается, что, возможно, где-то нужно активировать протокол 14443-4. Но, в контексте тех комманд которые выполнялись при программировании новых ключей, не понятно как именно это сделать. Описание команды RATS пока найти не удалось. Как я понимаю, этой командой активируется протокол 14443-4? При попытке авторизации в сектор 0х9003 приходит фрейм ошибки (возможно не от карты, а от микросхемы считывателя, используется считыватель на основе микросхемы NXP PN532). 00 00 FF 00 FF 00 00 00 FF 01 FF 7F 81 00 Этот же считыватель может читать другие ключи Mifare Plus в режиме SL3 (проходить аутентификацию и читать значение из сектора). Чип PN532 может не поддерживать всех функций 14443-4, а именно у него кажется нет готовой команды RATS. При обнаружении совместимой карты он может сам отправить команду RATS, но изменить её параметры нет возможности. По-умолчанию используется FSL=0, что означает, что максимальный объем данных в команде может быть 64 байта. How to program the RATS command in iso14443a initialization and anticollision Может в моем случае проблема именно в считывателе?
×
×
  • Создать...