Перейти к содержанию
Альтернатива ACR122U: работа с NFC Tools, libnfc и PC/SC Выбрать ODRFID-N или ODRFID-M

Альтернатива ACR122U: работа с NFC Tools, libnfc и PC/SC

Как использовать ODRFID-N и ODRFID-M с NFC Tools, Cardpeek и libnfc в Linux: чтение MIFARE Classic, команды PC/SC и выбор модели.

ODRFID-N и ODRFID-M подходят для чтения MIFARE Classic в NFC Tools, Cardpeek и программах на базе libnfc. Если вы выбираете ACR122U для просмотра памяти карт, сохранения дампов или своего приложения на PC/SC, эти модели можно рассмотреть как альтернативу.

Через ODRFID можно получить UID карты, прочитать секторы с известными ключами и посмотреть права доступа. Примеры в статье рассчитаны на MIFARE Classic 1K и Linux.

Для подключения включите CCID в программе-конфигураторе ODRFIDConfig. Этот интерфейс доступен в прошивке 3.14 — перед заказом уточните подходящую сборку для своей модели.

Что вы хотите сделать с картой

Для просмотра памяти подойдёт приложение с графическим интерфейсом, для обработки дампов — консольная утилита, а для интеграции в свою систему — библиотека на нужном языке.

ЗадачаПрограмма для ODRFID
Посмотреть UID и память Classic 1KNFC Tools Desktop
Разобрать секторы, блоки и права доступаCardpeek
Сохранить дамп из командной строкиnfc-mfclassic из нашей версии libnfc
Прочитать карту из своего приложенияnfc-pcsc для Node.js, pyscard для Python, libfreefare для C
Ввести номер карты в 1С, Excel или форму браузераРежим клавиатуры HID

Для чтения защищённого сектора нужен действующий ключ A или B. Если ключи карты изменены, используйте свои: стандартный ключ FFFFFFFFFFFF подходит только секторам, где он не менялся.

Как подключаются программы для ACR122U

ACR122U работает с приложениями через PC/SC — программный интерфейс доступа к смарт-картам. Его команды описаны в руководстве ACS. ODRFID с включённым USB-интерфейсом CCID также доступен через PC/SC и выполняет команды получения UID, аутентификации и чтения Classic.

В NFC Tools и Cardpeek достаточно выбрать ODRFID в списке считывателей после настройки драйвера. Программы на базе libnfc требуют нашей версии библиотеки.

Если приложение ищет считыватель только по названию ACR122U, в его настройках или коде нужно добавить ODRFID в список допустимых устройств. Если у закрытой программы такой настройки нет, сначала уточните совместимость у разработчика или в нашей поддержке.

NFC Tools: UID и память карты в одном окне

NFC Tools Desktop 2.7 показывает тип карты, UID и ATR — ответ активации карты через PC/SC. Перейдите на вкладку Memory, чтобы посмотреть 64 блока MIFARE Classic 1K.

Отдельная сборка NFC Tools не нужна. Подготовьте драйвер, включите CCID, выберите ODRFID и поднесите карту.

NFC Tools Desktop читает память MIFARE Classic 1K через считыватель ODRFID
Память Classic 1K в NFC Tools Desktop при подключении через ODRFID.

Как подключить ODRFID к NFC Tools.

Cardpeek: секторы и права доступа

Cardpeek 0.8.5 помогает разобраться в структуре Classic 1K. Анализатор mifare reader показывает 16 секторов, блоки данных и права чтения и записи. Для карты со стандартными ключами выберите Use default keys.

Полученное дерево можно сохранить в XML и изучить позднее. Кнопка Save сохраняет файл на компьютер, не записывая данные на карту.

Cardpeek показывает секторы и права доступа MIFARE Classic, прочитанной через ODRFID
Секторы и права доступа в Cardpeek после чтения карты.

Сборка и настройка Cardpeek.

libnfc, mfoc и mfterm

Для работы с ODRFID используйте наш форк libnfc-odrfid на основе libnfc 1.8.0. Команды сборки приведены в инструкции.

С этой библиотекой доступны:

  • nfc-list — UID и параметры обнаруженной карты;
  • nfc-mfclassic — сохранение 64 блоков Classic 1K в дамп 1024 байта;
  • mfoc — чтение Classic со стандартными ключами;
  • mfterm — просмотр памяти и прав доступа в интерактивном терминале;
  • libfreefare — чтение карты из C-приложения;
  • mfoc-hardnested — сохранение дампа карты со стандартными ключами.

При сборке этих программ укажите заголовки и библиотеку из libnfc-odrfid. NFC Tools, Cardpeek, nfc-pcsc и pyscard подключаются к PC/SC напрямую и установки libnfc не требуют.

mfoc и mfoc-hardnested в этой инструкции используются для чтения карт с известными ключами.

Исходники и инструкция по сборке libnfc.

Команды ACR122U для чтения Classic на ODRFID

В собственном приложении можно использовать ту же последовательность: получить UID, загрузить ключ в считыватель, пройти аутентификацию и прочитать блок. Команды отправляются через PC/SC, например методом transmit() библиотеки pyscard.

Команды записаны в шестнадцатеричном виде (HEX). Пример для блока 4 карты с ключом A FFFFFFFFFFFF:

ОперацияКоманда в HEX
Получить UIDFF CA 00 00 00
Загрузить ключ FFFFFFFFFFFF в слот 0 считывателяFF 82 00 00 06 FF FF FF FF FF FF
Аутентифицировать блок 4 ключом A из слота 0FF 86 00 00 05 01 00 04 60 00
Прочитать 16 байт блока 4FF B0 00 04 10

Эти команды отправляются через PC/SC. В COM-порту (CDC-терминале) используются другие команды — AT-команды. Формат байтов описан в API ACR122U, разделах 4.1 и 5.1–5.3. Готовый пример для Python показывает, как передать их считывателю и обработать ответ.

FF 82 загружает ключ в память считывателя для аутентификации. Ключи на самой карте эта команда не меняет. После каждого запроса проверяйте ответ 90 00 — он означает успешное выполнение. При чтении перед кодом 90 00 приходят 16 байт данных. Если аутентификация не прошла, проверьте ключ и права доступа сектора.

Для Node.js есть пример nfc-pcsc: событие card сообщает UID, authenticate() открывает доступ к сектору, а read() читает блок.

Подготовка рабочего места

  1. Уточните прошивку с поддержкой CCID для своей модели.
  2. В ODRFIDConfig включите CCID, выберите составной USB-профиль, сохраните настройки и перезапустите считыватель.
  3. Установите pcsc-lite и libccid. Добавьте в список устройств драйвера идентификаторы USB (VID:PID) ODRFID: 0483:A26A.
  4. Запустите pcsc_scan и убедитесь, что он видит считыватель и карту.
  5. Откройте нужную программу. Для приложений на базе libnfc установите libnfc-odrfid.

Перед запуском следующей программы закройте предыдущую. Если после libnfc другая программа не видит карту, перезапустите считыватель и откройте программу заново.

Настройка CCID и инструкции для десяти приложений.

ODRFID-N или ODRFID-M

Выбирайте модель по картам, с которыми работаете:

МодельКарты на рабочем месте
ODRFID-NСовместимые MIFARE и NTAG 13,56 МГц
ODRFID-MТе же карты 13,56 МГц, а также EM-Marine и HID Prox 125 кГц

Для меток 125 кГц у ODRFID-M используются штатные программы и интерфейсы ODRFID: NFC Tools и PC/SC в этой статье описаны для карт 13,56 МГц.

Обе модели также могут вводить номер карты как USB-клавиатура и работать с вашим ПО через AT-команды по COM-порту.

Подойдёт ли ODRFID для вашей программы

Для чтения Classic в перечисленных приложениях начните с инструкции по подключению. Если нужны запись NDEF, ISO-DEP, FeliCa, NFC-DEP, специальные команды ACR122U или работа в Windows и macOS, уточните совместимость до заказа.

Напишите в поддержку: укажите модель карты, название и версию программы, операционную систему и нужные операции. Эти сведения помогут подобрать считыватель под вашу задачу.

Выбрать ODRFID-N или ODRFID-M в каталоге.