4/1/2013

Структура памяти Mifare Classic 1k и 4k

Хотите вступить в клуб отважных исследователей карточных дампов? Тогда вы пришли по нужному адресу. Этот пост я пишу с целью разобраться в том, как записываются и в каком виде хранятся данные в памяти меток Mifare Classic.

Метки Mifare Classic 1k и 4k имеют соответственно 1 и 4 килобайта перезаписываемой памяти. Память разделена на так называемые секторы (sector) равные 64 или 256 байтам. Каждый из секторов содержит в себе секретный ключ. Доступ к записанным в сектор данным можно получить, только пройдя процедуру аутентификации с этим ключом. То есть пользователи (или приложения) могут писать на метку необходимые им данные не раскрывая друг-другу ни самих данных, ни ключей доступа к секторам.

Память Mifare Classic 1k

sector1k

У этой метки 16 секторов, каждый из которых равен 64 байтам. Первый сектор (zero sector) имеет служебную функцию, и его структуру рассмотрим чуть позже.

block1k

64-байтный сектор состоит из 4 блоков (block) по 16 байт. Блок — это минимальная единица адресации в метках mifare. Даже если требуется записать или считать один байт считывать/записывать вместе с ним придется весь блок. Первые три блока предназначены для записи произвольных данных. Четвертый блок называется sector trailer и содержит служебную информацию: два 6-байтных ключа и access conditions. В access conditions указано какие операции с блоками можно осуществлять авторизовавшись с одним из ключей. Пара ключей позволяет разграничивать права также как их разграничивают в операционных системах между пользователями. Дадим например ключу A (юзер) права на чтение из первых трех блоков, а ключу B (админ) на чтение и запись во все четыре. Вполне жизненная ситуация, подойдет для системы контроля, где user это турникет с валидотором, а admin компьютер службы безопасности. Кстати наличие двух ключей не является обязательным условием. Access conditions можно выставить таким образом, что ключ будет один — ключ А, а ключ B становится просто дополнительным полем данных. А может быть ни одного ключа? Нет, не может. Процедура аутентификации обязательна для всех секторов и метки Mifare Classic уже с завода выходят с некоторыми стандартными ключами, которые потом можно поменять.

Память Mifare Classic 4k

sector4k

Секторы 4-килобайтной метки не одинаковы по своим размерам. Секторы 1 - 31 включая zero sector равны 64 байтам, а последние 8 секторов 32 - 39 уже 256 байтам. Внутренняя структура у секторов 1 - 31 точно такая же, как и у Mifare Classic 1k. Нарисуем 256-байтный сектор:

block4k

Zero sector

Структура нулевого сектора одинакова для 1k и 4k меток:

zero_sector

Самый первый блок нулевого сектора называется manufacturer block или block 0. От всех других блоков метки он отличается тем что:

  • запись в этот блок невозможна, он находится в режиме read only вне зависимости от значения access conditions
  • хранит данные, которые прописаны в нем раз и навсегда заводом изготовителем
  • единственный блок данные из которого можно получить даже если неизвестны ключи доступа к сектору

Нарисуем блок побайтово:

block0

serial number — 4-х байтовый серийный номер который по идее должен быть уникален

CB — check byte, контрольная сумма высчитываемая на основе серийного номера следующим образом:

CB = [byte 0] XOR [byte 1] XOR [byte 2] XOR [byte 3]

manufacturer data — какие-то данные записанные заводом изготовителем


mifare


Previous post
Mifare Classic 1k. Что внутри? Хотел назвать статью “Вскрытие” но постеснялся. Вскрытие это вот здесь. А у меня из лабораторного оборудования только ножницы и стакан с
Next post
Access conditions. Важно. Вот так я этот пост и назвал - «Важно». Потому что, совершая манипуляции с меткой mifare и не разбираясь при этом в access conditions метку можно