Номер карты MIFARE — это её UID (уникальный идентификатор), который записан производителем в нулевом блоке чипа и не может быть изменён на обычных картах. Считать его можно за секунды: достаточно NFC-смартфона, USB-ридера или недорогого модуля PN532 для Arduino.
Важно различать UID чипа и данные, записанные в секторах карты (номер пропуска, баланс, имя владельца). UID доступен без ключей, а содержимое защищённых секторов — только после аутентификации ключами доступа. В этой статье разберём оба случая, начиная с самого простого.
Что такое UID и чем он отличается от данных на карте
UID — это серийный номер чипа, длиной 4, 7 или 10 байт в зависимости от типа карты. У карт MIFARE Classic 1K чаще встречается 4-байтовый UID, у MIFARE Ultralight и DESFire — 7-байтовый. Именно этот номер обычно имеют в виду, когда говорят «узнать номер карты» для привязки к СКУД, домофону или системе парковки.
Данные в секторах — отдельная история. Они защищены ключами A и B, и без них чтение невозможно. Заводские ключи по умолчанию — FF FF FF FF FF FF, но в реальных системах их почти всегда меняют.
- 🪪 UID — читается любым ридером без ключей, менять нельзя (кроме карт с перезаписываемым нулевым блоком).
- 🔑 Сектора данных — требуют аутентификации ключом.
- 🏷️ Номер, напечатанный на корпусе карты — может совпадать с UID (в десятичном виде), а может быть внутренней нумерацией организации.
UID карты MIFARE считывается без ключей и паролей — достаточно поднести карту к любому NFC-ридеру.
Способ 1: считать UID смартфоном с NFC
Самый доступный метод — телефон с модулем NFC. На Android установите приложение для чтения NFC-меток, например NFC Tools или аналогичное из официального магазина приложений. Откройте приложение, включите NFC в настройках телефона и поднесите карту к задней крышке — обычно антенна расположена рядом с блоком камеры.
На экране появится информация о теге: тип чипа, технология и серийный номер (UID) в шестнадцатеричном виде, например 04:A3:1F:B2. Если система требует номер в десятичном формате, его нужно конвертировать — об этом ниже.
На iPhone чтение UID карт MIFARE ограничено: iOS работает с NFC-метками в формате NDEF, и «голый» UID карты MIFARE Classic стандартными средствами может не отображаться. Возможности зависят от модели iPhone и версии iOS, поэтому для гарантированного результата лучше использовать Android или аппаратный ридер.
Местоположение NFC-антенны у разных телефонов отличается. Если карта не читается, медленно поводите ею по задней крышке в районе камеры и середины корпуса.
Способ 2: USB-ридер для ПК
Для регулярной работы с картами удобнее настольный считыватель — например, устройства семейства ACR122U или любой совместимый ридер стандарта PC/SC. Он подключается по USB и определяется системой как смарт-карт-ридер.
Порядок действий простой: установите драйвер с сайта производителя ридера, подключите устройство, положите карту на считывающую поверхность и запустите утилиту чтения (у многих производителей есть фирменная программа). UID отобразится в окне программы сразу после поднесения карты.
⚠️ Внимание: устанавливайте драйверы только с официального сайта производителя ридера. Программы «чиповщиков» с форумов могут содержать вредоносный код.
Способ 3: модуль PN532 и Arduino
Для DIY-проектов (самодельный замок, учёт рабочего времени) используют модуль PN532, подключаемый к Arduino по I2C или SPI. С библиотекой Adafruit PN532 чтение UID занимает несколько строк кода.
#include <Adafruit_PN532.h>
// ...инициализация модуля...
uint8_t uid[7];
uint8_t uidLength;
if (nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength)) {
for (uint8_t i = 0; i < uidLength; i++) {
Serial.print(uid[i], HEX); Serial.print(" ");
}
}
После загрузки скетча откройте монитор порта и поднесите карту к антенне модуля — байты UID выведутся в шестнадцатеричном виде. Точный код зависит от версии библиотеки, поэтому сверяйтесь с примерами, идущими в комплекте с ней.
☑️ Проверка перед считыванием UID
Конвертация UID: HEX, DEC и обратный порядок байтов
Один и тот же UID системы отображают по-разному. Ридер показывает HEX, а СКУД может требовать десятичное число. Кроме того, часть оборудования читает байты в обратном порядке (reversed). Поэтому UID 04 A3 1F B2 может превратиться в совершенно разные числа.
| Представление | Пример для UID 04 A3 1F B2 | Где встречается |
|---|---|---|
| HEX прямой | 04A31FB2 | Приложения на смартфоне, PN532 |
| HEX обратный | B21FA304 | Некоторые контроллеры СКУД |
| DEC прямой | 77886162 | Системы учёта, домофоны |
| DEC обратный | 2986322692 | Часть проприетарных панелей |
Конвертировать можно в любом онлайн-калькуляторе HEX→DEC или вручную через инженерный калькулятор. Если введённый номер не срабатывает в системе — первым делом попробуйте обратный порядок байтов.
⚠️ Внимание: несовпадение порядка байтов — самая частая причина, по которой «правильный» UID не принимается системой. Прежде чем искать другую ошибку, проверьте оба варианта.
Почему на карте напечатан другой номер?
Число, нанесённое на корпус карты при печати, часто является десятичным представлением UID или внутренним номером тиража. Оно может не совпадать с UID, считанным ридером, особенно если наносилось подрядчиком по своей нумерации. Ориентируйтесь на фактический UID чипа.
Когда UID не читается: диагностика
Если карта не определяется, причина обычно одна из нескольких. Сначала убедитесь, что это вообще карта 13,56 МГц: брелоки и карты EM-Marin работают на 125 кГц и NFC-смартфоном не читаются. Внешне они неотличимы.
Далее проверьте сам считыватель на заведомо рабочей карте. Если и она не читается — проблема в ридере или настройках телефона, а не в карте. Физическое повреждение антенны карты (излом, сильный перегиб) тоже делает её нечитаемой, при этом чип может быть цел.
- 📡 Проверьте частоту карты — 125 кГц смартфон не увидит.
- 🔋 Уберите чехол с металлическими элементами — он экранирует сигнал NFC.
- 🃏 Уберите рядом лежащие банковские карты — они создают помехи при считывании.
- 🔄 Перезагрузите смартфон или переподключите USB-ридер.
Быстрая проверка типа карты: если она срабатывает на домофоне, но не читается смартфоном — почти наверняка это 125 кГц (EM-Marin), а не MIFARE.
Чтение защищённых секторов и правовые ограничения
Для чтения данных из секторов MIFARE Classic нужен ключ доступа. Заводской ключ FF FF FF FF FF FF работает только на картах, где его не меняли. В корпоративных системах ключи уникальны и хранятся у администратора системы.
Подбор ключей к чужим картам — юридически рискованное действие: доступ к данным без согласия владельца системы может нарушать законодательство. Работайте только со своими картами или по согласованию с владельцем инфраструктуры.
UID читается свободно, но содержимое секторов — только с ключами доступа. Для чужих карт получение ключей без разрешения владельца недопустимо.
Часто задаваемые вопросы
Можно ли узнать номер карты MIFARE без специального оборудования?
Да, если у вас смартфон на Android с NFC. Установите приложение для чтения NFC-тегов, поднесите карту к задней крышке — UID отобразится на экране. Отдельный ридер для этого не обязателен.
Почему UID на карте и в системе различаются?
Чаще всего причина в порядке байтов: часть оборудования читает UID в обратном порядке, а часть конвертирует HEX в десятичный формат. Попробуйте все четыре представления номера — прямой и обратный HEX, прямой и обратный DEC.
Можно ли изменить UID карты MIFARE?
На оригинальных картах UID записан производителем и не изменяется. Существуют специальные карты с перезаписываемым нулевым блоком («magic cards»), но это отдельный тип изделий, а не обычная карта MIFARE.
Смартфон не видит карту — она сломана?
Не обязательно. Возможно, карта работает на частоте 125 кГц (EM-Marin) и в принципе не читается NFC. Проверьте её на другом NFC-устройстве или ридере, прежде чем делать вывод о неисправности.
Чем MIFARE Classic отличается от MIFARE DESFire при чтении номера?
UID читается одинаково в обоих случаях, но у DESFire он обычно 7-байтовый. Кроме того, DESFire может быть настроена на выдачу случайного UID при каждом считывании (функция защиты приватности) — тогда постоянный номер получить через обычное чтение не удастся.