Четверг, 29.06.2017, 12:08 | RSS | Приветствую Вас Гость
Главная | Регистрация | Вход
Мои устройства для ремонта домофонов и записи ключей
Главная
Меню сайта
Форма входа
Категории раздела
Мои статьи [15]
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 373
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Главная » Статьи » Мои статьи

    Продолжим разговор о Mifare

    В прошлый раз я привёл начальные сведения о картах Mifare.

    В этой статье рассмотрим некоторые практические моменты использования карт и брелков Mifare в домофонах.

    Для работы возьмём карты Mifare Classic 1K, считыватель CP-Z2MF и контроллер Z5R.

    Рассмотрим сначала самый простой вариант работы. Запись карт или брелков в простом режиме ( без защиты ключами ).

    Немного о том как читать и писать карты Mifare.

                      

    Можно, конечно, купить сразу  ACR-122U с программным обеспечением за 8500 руб. Но для первых шагов достаточно считывателя CR522 и платки Arduino Nano.

    То есть всё это обойдётся не более чем в 1000 руб. Кстати, к считывателю прилагается карта и брелок, что тоже хорошо для начала работы.

    В сети можно легко найти скетчи для работы. Это библиотеки RFID и MFRC522. Там есть примеры чтения и записи карт Mifare 1K. 

     

    Напомню структуру памяти карты Mifare 1K..

    Память состоит из 16 секторов по 4 блока в секторе. Каждый блок содержит 16 байт.

    В каждом .секторе первые три блока служат для записи информации, а последний блок содержит ключи защиты ( А и В )  и  биты доступа.

    Этот блок называется трейлером ( прицепом ).

     Ключи защиты  А  и  В  имеют длину в 6 байт. Ключ А находится в начале блока ( 0 - 5 байт ), ключ В находится в конце блока ( 10 - 15 байт ).

     Ключ А не читается.  Ключ  В  может  читаться  при  определённой  установке  битов  доступа.

     Биты доступа определяют варианты работы с этим сектором ( а точнее определяют работу с каждым блоком, включая блок "трейлера" ).

    То есть можно, например, установить чтение по ключу А, чтение по ключу В, чтение/запись по ключу В  и  т.  д. ...... Главное тут не переусердствовать.

    Так как можно случайно заблокировать блок или весь сектор !!! 

    Сейчас рассмотрим самый простой случай. Когда ключи доступа  А  и  В  заводские (  т. е. равны  FF FF FF FF FF FFh ).

    Отдельно рассмотрим  сектор 0  и  блок 0.  Этот блок содержит уникальный номер карты ( 4 байта  ( байты 0  -  3  блока 0 ) + байт контрольной суммы

    этого номера BCC (  байт 4 )  +  байт SAK (  байт 5 - идентификатор )  +  два байта ATQA ( байты 6 и 7 - тип карты  ).

    Остальные байты блока 0 содержат служебную информацию. 

    Этот блок пишется на заводе и больше не переписывается.

    Нам интересны первые 4 байта   -  это номер карты ( UID ). Он всегда читается.  

    Например, при чтении 0 блока  получаем:  25  79  3E  D5  03  08  04  00  85  00  00  00  00  00  00  00. ( это если не включена защита блока 0 )

    Если защита включена, то читается просто номер ( UID )  =  25  79  3E  D5. 

    Обращаю внимание, что первым слева идёт младший байт номера.

    То есть:     UID карты  =  D5  3E  79  25.       BCC  =  03     SAK  =  08     ATQA  =  00  04  ( байты тут уже перевёрнуты для нормального чтения )

     

    В результате экспериментов выяснилось, что считыватель CP-Z2MF при эмуляции создаёт код ключа DALLAS на основе 3-х старших байт

    UID карты (  т. е. D5  3E  79 ). То есть младший байт отрезается.

    В контроллер пишется 5 байт кода ключа DALLAS. То есть в памяти контроллера увидим такой код:  00  00  D5  3E  79.

    Если номер содержит 7 байт ( например "Ультралайт"), то обрезается младший и старший байт от UID и пишется в код DALLAS только 5 байт номера.

    Теперь о самом главном   -  как создать копию ключа. Для этого нужна будет заготовка Mifare Zero, в которой можно перезаписывать  0-й  блок.

    Опять же в библиотеке MFRC522 есть пример для записи UID в эту заготовку.  Считывается номер ( UID ) и записывается в нулевой блок

    заготовки Mifare Zero. Правда этот пример копирует только сам UID + ВСС.  

    Как выяснилось, для нормального чтения карты,  нужно копировать не только UID........

     

     

    Алгоритм создания копии ( если исходный ключ был без защиты ) получается такой:

    1.    Читаем  блок 0  ( сектор 0 )  исходной  карты.  Если ключи не изменены, то  блок 0  карты  свободно  читается  с  ключом  А = FF FF FF FF FF FFh.

    2.    Применяем  программу  для  копирования  блока 0  в  заготовку  Mifare  Zero.

    3.    Проверяем  запись.  Читаем  Mifare  Zero

     

    Остаётся  проверить  откроет  такая  копия  замок  или  нет............

     

    Отдельно  хочу  сказать  немного  о  брелках  Mifare  от  фирмы  Визит.

     Как  всегда, эта фирма  пошла  своим  путём  и  взяла  за  основу  "Ультралайты".

     Эти  брелки  представляют  собой  самую  простую  ветку  Mifare  и  вообще  не  имеют  защиты.

    Память  у  них  составляет  16  страниц  по  4  байта  на  страницу.

    Номер  ( UID )  имеет  длину  7  байт  и  находится  он  в  страницах  0  и  1.

     

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

     

                                                                                             При перепечатке этой статьи ссылка на мой сайт обязательна !!!

     

     

     

       .

     

     

     

      

      

    Категория: Мои статьи | Добавил: petr5555 (19.05.2016)
    Просмотров: 1376 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]

    Copyright MyCorp © 2017