Программа для программирования карт Mifare: выбор, настройка и запись

Подключённый к ПК ридер ACR122U видит карту Mifare Classic 1K, а программа возвращает ошибку аутентификации сектора — типичная ситуация, когда карта защищена нестандартным ключом, а софт пытается прочитать её заводской связкой FF FF FF FF FF FF. Именно выбор правильной программы и корректная работа с ключами определяют, получится ли записать данные на карту Mifare или процесс застрянет на первом же секторе.

Карты семейства Mifare — это RFID-метки стандарта ISO 14443A, работающие на частоте 13,56 МГц. Они применяются в системах контроля доступа, транспортных картах, пропусках и бейджах. Программирование таких карт требует трёх компонентов: совместимого считывателя, подходящего программного обеспечения и понимания структуры памяти карты. Ниже разберём каждый из них.

Какие карты Mifare можно программировать

До выбора софта определите тип карты — от этого зависит и набор программ, и сама возможность записи. Наиболее распространены следующие модификации:

  • 🔹 Mifare Classic 1K / 4K — память разбита на сектора с двумя ключами доступа (Key A и Key B) на каждый; самый массовый тип для СКУД.
  • 🔹 Mifare Ultralight / Ultralight C — небольшая память постраничной организации, часто встречается в транспортных билетах.
  • 🔹 Mifare DESFire — карта с файловой структурой и криптографией; программируется через специализированные API и команды, обычные «редакторы дампов» с ней не работают.
  • 🔹 Mifare Plus — обратно совместима с Classic в базовом режиме, но поддерживает усиленную защиту.

Важный нюанс: UID (уникальный серийный номер) у оригинальных карт NXP зашит производителем и не перезаписывается. Сменить UID можно только на специальных китайских «магических» картах (так называемые UID changeable), и далеко не каждая программа умеет с ними работать.

Обзор популярных программ

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

ПрограммаПлатформаОсновное назначение
Mifare Classic Tool (MCT)Android (NFC)Чтение и запись Classic-карт со смартфона, работа с ключами
NFC ToolsAndroid / iOS / ПКЗапись NDEF-данных, простые задачи без работы с секторами
ACR122U Tool / SDK-утилитыWindowsРабота с ридером ACR122U: чтение UID, запись блоков
Proxmark3 (клиент)Windows / LinuxПрофессиональный анализ, подбор ключей, эмуляция
libnfc + nfc-mfclassicLinux / WindowsКонсольная запись и чтение дампов Classic-карт

Для начинающих оптимальна связка «смартфон с NFC + MCT»: программа бесплатна, показывает карту в виде секторов и блоков и позволяет сохранять дампы. Для стационарной работы на ПК чаще берут недорогой USB-ридер ACR122U и софт из его SDK либо сторонние утилиты.

Профессиональные задачи — восстановление неизвестных ключей, анализ протокола, эмуляция карты — решаются аппаратным анализатором Proxmark3 с его клиентским ПО. Это уже не «программа для записи пропуска», а исследовательский инструмент, требующий опыта.

📊 Какое устройство вы используете для работы с картами Mifare?
Смартфон с NFC
USB-ридер ACR122U
Proxmark3
Пока только выбираю оборудование

Структура памяти Mifare Classic: что нужно знать перед записью

Память Mifare Classic 1K разделена на 16 секторов по 4 блока в каждом. Три первых блока сектора отведены под данные, а четвёртый — секторный трейлер: в нём хранятся Key A, биты доступа и Key B. Именно биты доступа определяют, что разрешено делать с блоками — читать, писать, инкрементировать значения.

Нулевой блок нулевого сектора содержит UID и данные производителя. На обычных картах он доступен только для чтения. Ошибочная запись в трейлер сектора — самая частая причина «окирпичивания» карты: если записать туда случайные байты, можно выставить такую комбинацию битов доступа, при которой сектор навсегда станет недоступным ни для чтения, ни для записи.

⚠️ Внимание: перед любой записью в трейлер сектора убедитесь, что биты доступа соответствуют осмысленной конфигурации. Проверить корректность комбинации можно встроенным калькулятором битов доступа в Mifare Classic Tool — не записывайте трейлер «вслепую».

Как устроены биты доступа

Трейлер сектора содержит 4 байта условий доступа (байты 6–9). В них закодированы права на каждый блок: чтение, запись, инкремент/декремент. Часть комбинаций делает блок доступным только для чтения, часть — полностью блокирует сектор. Точную расшифровку конкретной комбинации удобно проверять в MCT или документации NXP на Mifare Classic.

Пошаговая запись карты на примере Mifare Classic Tool

Типовой сценарий — записать на новую карту дамп существующей или отредактировать отдельные блоки. Порядок действий в MCT выглядит так:

☑️ Подготовка к записи карты Mifare

Выполнено: 0 / 5

Сначала выполните чтение: приложите карту, выберите файл ключей (в программе есть стандартный набор, включая заводской FFFFFFFFFFFF) и дождитесь результата. Сектора, к которым ключ не подошёл, будут помечены как непрочитанные — для них потребуется добавить правильный ключ в файл ключей.

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

Проблема ключей: почему карта не читается

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

  • 🔑 Проверьте расширенные списки известных ключей — в MCT можно подключать пользовательские файлы ключей.
  • 🔑 Если у вас есть легальный доступ к системе, ключи можно запросить у оператора СКУД или найти в документации на установку.
  • 🔑 Для исследовательских задач существуют атаки на слабые ключи (например, через Proxmark3), но они применимы только к картам, которыми вы владеете.

⚠️ Внимание: копирование и модификация чужих пропусков, транспортных и платёжных карт может нарушать закон и правила систем, в которых эти карты используются. Работайте только с собственными картами или с явного разрешения владельца системы.

Отдельный случай — карты с заводскими ключами, которые так и не были сменены при внедрении. Такие карты читаются стандартным набором ключей за секунды, что является уязвимостью конкретной системы, а не особенностью программы.

Работа на ПК: ридер ACR122U и консольные утилиты

Для Windows и Linux популярен USB-считыватель ACR122U. После установки драйверов он определяется как PC/SC-устройство, и с ним работают как фирменные утилиты из SDK, так и открытые инструменты на базе libnfc. Типовая консольная команда записи дампа выглядит примерно так:

nfc-mfclassic w a dump.mfd keys.mfd

Здесь w — режим записи, a — использование ключа A, далее указываются файлы дампа и ключей. Точный синтаксис зависит от версии утилиты, поэтому сверяйтесь со справкой конкретной сборки (--help). Если запись обрывается на середине, чаще всего причина в том, что на целевой карте часть секторов закрыта нестандартными ключами, которых нет в вашем файле.

Типичные ошибки и их решение

Первая группа проблем — аппаратная: программа не видит ридер или карту. Проверьте, что драйверы установлены, устройство отображается в системе, а карта лежит в зоне антенны. На смартфоне убедитесь, что NFC включён и карта не экранируется металлической поверхностью.

Вторая группа — логическая: аутентификация проходит, но запись не выполняется. Здесь проверьте биты доступа целевого сектора — возможно, конфигурация карты запрещает запись ключом A, и нужно использовать Key B. Также убедитесь, что типы карт совпадают: дамп от Classic 4K нельзя полностью записать на карту 1K из-за разной структуры памяти.

⚠️ Внимание: не пытайтесь многократно перезаписывать трейлер сектора «методом подбора» — несколько неудачных записей с неверными битами доступа могут необратимо заблокировать сектор. Восстановить такую карту программными средствами обычно невозможно.

Часто задаваемые вопросы

Можно ли запрограммировать карту Mifare без специального ридера?

Да, если у вас смартфон с NFC — приложение Mifare Classic Tool позволяет читать и записывать карты Classic без дополнительного оборудования. Для DESFire и сложных задач потребуется ПК с ридером.

Почему программа читает UID, но не показывает данные секторов?

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

Можно ли изменить UID карты Mifare?

На оригинальных картах NXP — нет, UID зашит на заводе. Изменение возможно только на специальных картах с перезаписываемым нулевым блоком (UID changeable), и поддерживают это далеко не все программы.

Карта перестала определяться после записи трейлера. Что делать?

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

Чем отличается Mifare Classic от Mifare DESFire при программировании?

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