Вторник, 30.04.2024, 04:34 | RSS | Приветствую Вас Гость
Главная | Регистрация | Вход
Мои устройства для ремонта домофонов и записи ключей
Главная
Меню сайта
Форма входа
Категории раздела
Мои статьи [21]
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 420
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество 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 содержат служебную информацию. 

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

    Кстати, самое интересное  -  если сектор 0 защищён ключом доступа, то командой READ этот блок 0 не читается. 

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

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

    Если защита включена, то читается  половина блока:    25  79  3E  D5 ( UID ) + 03 ( BCC ) + 08 ( SAK ) + 04 00 ( ATQA ). То есть можно прочитать половину блока 0.

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

    То есть ( на самом деле ):  UID карты  =  D5  3E  79  25.       BCC  =  03     SAK  =  08     ATQA  =  04  00 

    ( байты UID тут уже перевёрнуты для нормального чтения )

     

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

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

    В контроллер же пишется пишется 5.5  байт кода ключа DALLAS.  То есть добавляются ещё нули.

    В памяти контроллера тогда увидим такой код:  00  00  D5  3E  79.

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

    Кстати, есть отличия и в представлении номера у считывателей с защитой и без...........

     

     

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

    Mifare OTP( OTP2.0 ) - тоже имеют перезаписываемый блок 0, но его можно записать только один раз !!!

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

    заготовки Mifare Zero ( OTP, OTP2/0 ). Правда этот пример копирует только сам UID + ВСС ( т. е. не весь блок 0 ).  

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

    То есть самое правильное - это копировать всю читаемую часть блока 0 :   UID  +  BCC  +  SAK  +  ATQA. 

     

     

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

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

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

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

     

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

     

    Но всё это просто пока не встретится карта с закрытыми секторами. Вот тут уже так просто копию не сделаешь !!!

    Нужно сначала узнать ключи доступа к секторам.............

    Тут есть разные способы:

    1.   Например, поиск ключей доступа к секторам. Это требует наличия считывателя карт ( ACR122U или дубликатора ТМД-5S ), компьютера, программ для взлома и времени.....

    2.   Второй способ - это попробовать перехватить информацию о ключе доступа в  процессе общения карты со считывателем,

         расшифровать её ( специальной программой ) и в результате получить ключ доступа. 

        Сейчас для этого есть такие устройства как Проксмарк, Хамелеон  или  SMKey. Но этот способ требует выезда к конкретному домофону и

        даёт только  ключ от того сектора, с которым происходит общение в данном домофоне. Чтобы получить все остальные ключи всё равно придётся прибегнуть

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

     

        Впрочем, сейчас со взломом ключей всё не так однозначно.

        Дело в том, что уязвимость, которая была в старых картах Mifare 1K убрали, да и заготовки OTP2.0 тоже её не имеют...............

     

     

     

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

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

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

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

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

    Копию таких брелков можно создать на основе заготовки Mifare_UL, (  UL2.0 или UL3.0 ).

    При этом сначала создаётся копия страниц с UID ( 0 - 2 ), а потом уже пишутся оставшиеся страницы 4 - 15.

    Последними записываются страница OTP ( страница 3 ) и биты блокировки ( последние 2 байта на странице 2) ! ! !

    В начальном состоянии байты блокировки и страница OTP содержат нули.  

    Помните что OTP и байты блокировки устанавливаются ТОЛЬКО ОДИН РАЗ   ! ! !

    После того, как появились клоны ключей на заготовках Mifare_UL, в Визитах стали применять видоизменённые

    брелки Ультралайт с большей памятью ( 20 страниц вместо 16 ). 

    Заготовки Mifare_UL уже не могли полноценно дублировать эти новые ключи !

    Поэтому были выпущены новые заготовки UL 2.0 и UL3.0.

    Они имеют большую память ( 24 страницы ) и возможность блокирования номера ( UID ) от перезаписи.

    Правда заготовки UL2.0 имели кое-какие отличия от нормальных ключей и новые фильтры домофонов Визит стали и их отсеивать.

    Поэтому для домофонов Визит с новыми фильтрами лучше использовать заготовку Mifare UL3.0 !

     

    Время идёт вперёд, фильтры совершенствуются и вот опять новая заготовка UL-X !!!

     

     

     

     

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

     

     

     

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

     

     

     

       .

     

     

     

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

    Copyright MyCorp © 2024