Мои опыты с RFID-метками MIFARE Classic

Использование технологий RFID / NFC сейчас весьма популярно. Для начала разберемся с терминологией.

RFID-метки чаще всего содержат антенну и чип, и являются пассивными - питаются энергией радиоволны от считывателя. Существует несколько типов меток, работающих в различных диапазонах частот.
Наиболее популярные - HF - ВЧ (высокая частота 13,56 МГц, дальность до 1 м, слабо поглощается водой, в моей локации такие метки часто используются как ключи к домофонам).
Также применяются LF - НЧ (низкая частота 125 кГц, дальность до 10 см, применяются для чипирования животных) и реже UHF - УВЧ (ультравысокая частота 860-960 МГц, дальность до 15 м, сильно поглощается водой и металлом, применяются на складах и в магазинах).

NFC работает на той же частоте 13,56 Мгц, что и HF RFID (поэтому смартфон с поддержкой NFC может работать и с RFID-метками), но использует более сложные протоколы - режим эмуляции NFC-карточки, режим считывания/записи NFC-меток, режим "точка-точка" для обмена информацией.

Я рассмотрю только RFID-технологию.

Для экспериментов я приобрел вот такой набор из RFID-меток в виде брелка (1) и карточки (2) и плату (3) для подключения к микроконтроллеру, работающих  на частоте 13,56 МГц (HF).
RFID метки

Эти метки - представители семейства MIFARE Classic (MF1C / MF1S503x) c объемом памяти 1 килобайт (бывают и с 4 килобайтами):
MIFARE Classic 1k

Считывание и запись RFID-модулей я выполняю посредством Android-смартфона с приложением MIFARE Classic Tool:
MIFARE Classic Tool

Мой смартфон считывает RFID-карту с расстояния около 4 см.

Вот пример считанного дампа RFID-брелка:
дамп RFID метки

Как видно, память модуля разбита на 16 секторов с номерами от 0 до 15, а каждый сектор хранит 64 байта (16 · 64 = 1024 байта).

Сектор состоит из четырех блоков по 16 байт в каждом.
Первые 3 сектора хранят пользовательские данные, а последний сектор (trailer)- служебную информацию:
ключи MIFARE
Первые 6 байт хранят ключ Key A, последние 6 байт - ключ Key B, а между ними 3 байта AC (Access Conditions) управляют доступом к блокам сектора, а четвертый - "dummy" (может хранить произвольное значение).

Key A
по умолчанию: FF FF FF FF FF FF

Key B
по умолчанию: FF FF FF FF FF FF

AC
по умолчанию: FF 07 80

Особую роль играет нулевой сектор, который хранит идентификатор RFID-модуля (UID), и у большинства карт доступен только для чтения:
UID RFID метки
(в этом случае 4-хбайтный UID = 0x243545A3)

Для модификации содержимого RFID-метки нужно считать содержимое ее памяти (дамп), экспортировать его, отредактировать, импортировать и записать на метку. Для экспорта/импорта удобно использовать текстовый формат файлов *.mct.

Продолжение следует

Яндекс.Метрика