Как сделать дамп электронного ключа

Инструкция по снятию дампа с ключа Guardant Stealth

оригинальные драйверы Guardant и скачать дампер: search.rar

Все утилиты выложены в архивах с паролем: dongla-net.ru

После установки драйверов распакуйте архив с дампером в отдельную папку и

Появится окно примерно следующего содержания:

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа

Обязательно дождитесь окончания работы утилиты.

Когда окно закроется, в папке с дампером появятся несколько файлов с

Это и есть дамп вашего ключа.

Кроме этого очень желательно снять лог работы программы с ключем.

Лог делается с помощью утилиты USBTrace.

Утилиту USBTrace можно скачать по этой ссылке: Usb Trace

Все утилиты выложены в архивах с паролем: dongla net . ru

Затем нужно установить утилиту USBTrace и обязательно зарегистрировать согласно описанию к программе.

Интерфейс USBTrace должен начать заполняться текстовыми данными:

После чего запустить саму защищенную программу.

Заполнение данными продолжится.

Когда программа полностью запустится, желательно немного поработать в ней используя ее важные функции.

Потом закрыть защищенную программу.

В окне USBTra с e нажать кнопку Stop Capture тем самым остановить снятие данных.

Ввести имя файла например 1. txt и затем нажать кнопку Export тем самым сохранив файл лога.

Вот краткая наглядная инструкция как пользоваться утилитой.

Еще как правильно сделать лог можно посмотреть тут:

Дамп и лог UsbTrace следует заархивировать и отправить нам на адрес support@dongla-net.ru

Так – же следует прислать ссылку на саму защищенную программу.

Дистрибутив можно выложить с паролем в архиве на любой файлообменик такие как:

Данные снятые с ключа желательно выслать во вложении в письмо.

В самое ближайшее время мы свяжемся с вами…

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа

Инструкции по снятию данных с разных типов ключей:

Гарантии и техподдержка.

Мы гарантируем конфиденциальность и нераспространение любых данных, полученных от заказчика для проведения исследования ПО.
Все материалы после передачи заказчику удаляются с наших компьютеров немедленно или по истечению срока техподдержки (или по желанию заказчика).
Техподдержка на все виды выполненных работ осуществляется бесплатно в течении 6 месяцев после исполнения заказа.
В дальнейшем техподдержка осуществляется на договорной основе.

Мы не занимаемся распространением программного обеспечения и утилит для
взлома по (кряки, патчи, генераторы серийных номеров и т.д.).
Вы можете воспользоваться нашими услугами только если являетесь разработчиком
конкретного ПО или их представителем, или лицензионным пользователем
(при заказе бэкапа электронного ключа). Вся информация и материалы (утилиты и по), расположенные на сайте, представлены для ознакомительно-познавательных
целей и могут лишь использоваться для самостоятельного тестирования
своих программных продуктов. Любое использование материалов с сайта для действий, нарушающих законодательство РФ (УК РФ, Закон РФ «Об авторском праве и смежных правах» и др.), а также законодательства других стран – запрещено.

Источник

AntiHASP: эмулируем ключ аппаратной защиты HASP

Содержание статьи

В этой статье описаны способы обхода аппаратных систем защиты. В качестве примера рассмотрена технология HASP (Hardware Against Software Piracy), разработанная компанией Aladdin Knowledge Systems Ltd. В прошлом данная технология являлась одной из самых популярных аппаратных систем защиты ПО.

Мощью аппаратной защиты HASP пользуются многие серьезные разработчики софта, которые не хотят, чтобы их продукт несанкционированно распространялся. Хаспом, например, защищаются пакеты «1С.Бухгалтерия» или «1С.Предприятие», без которых не может прожить ни одно более или менее организованное дело. Популярный юридический справочник «КонсультантПлюс» также защищает доступ к данным с помощью электронных ключиков. Чтобы воспользоваться вышеупомянутым или другим не менее дорогостоящим софтом, не платя никому ни копейки, недостаточно просто полазить по Сети в поисках txt’шника с ключиками. Однако хакер всегда разберется, что делать с защитой, пусть и аппаратной. И паяльник ему для этого не понадобится.

Взглянем

Утрируя, можно сказать, что HASP состоит из двух частей: аппаратной и программной. Аппаратная часть — это электронный ключик в виде USB-брелка, PCMCIA-карты, LTP-девайса или вообще внутренней PCI-карты. Установленный софт будет работать только на той машине, в которую воткнут электронный ключ. Собственно, неплохо было бы отучить софт от такой неприятной для кошелька привычки.

Программная часть — это драйвера электронного ключа и различный софт, привязывающий электронные ключи с их драйверами непосредственно к защищаемому продукту или к каким-то зашифрованным данным. В статье мы рассмотрим и обойдем защиту, использующую USB-брелок — наверное, наиболее популярный электронный ключ на сегодня.

Механизм системы защиты

Сам брелок нас почти не интересует, в отличие от ПО в его комплекте. Для нас наибольший интерес представляет модуль hardlock.sys. Не углубляясь в подробности, отмечу, что этот драйвер отвечает за взаимодействие с аппаратным ключом. Он имеет два объекта устройства, один из которых обладает символьным именем DeviceFNT0. Используя этот объект, защищенное приложение посредством диспетчера ввода-вывода проверяет лицензию на использование данного ПО.

Главным недостатком такой системы защиты является возможность перехвата вызовов диспетчера ввода-вывода и эмулирования аппаратного ключа. Существует также вариант разработки драйвера виртуального ключа, но это гораздо более сложная техническая задача, нежели перехват вызовов.
Как тебе известно, модель драйвера описывается в структуре DRIVER_OBJECT при загрузке модуля. Она хранит массив обработчиков сообщений. Причем никто не мешает переписать эти адреса и получить управление, выполнив наш код. Таким образом, можно перехватывать и подменять IRP-пакеты, подставляя лицензионные данные. Другими словами, имея дамп ключа защиты, можно передать его программе, проверяющей верность лицензионных данных!

Для эксплуатации другого метода также требуется дамп ключа, но подстановка данных осуществляется иначе, а именно — в программной эмуляции. То есть драйвер защиты сможет обращаться с виртуальным ключом так же, как и с физическим.

Перехват и эмуляция

Как уже отмечалось, идея перехвата состоит в перезаписи обработчиков IRP-пакетов. Для этого необходимо иметь возможность изменять поля структуры DRIVER_OBJECT. К счастью, существует функция IoGetDevicePointer, которая возвращает указатель на объект вершины стека именованных устройств и указатель на соответствующий файловый объект. Вот фрагмент кода функции, устанавливающей ловушку:

NTSTATUS HookDevice(LPWSTR lpDevice)

UNICODE_STRING DeviceName;
PDEVICE_OBJECT DeviceObject;
PFILE_OBJECT FileObject;

Получив указатель на структуру DEVICE_OBJECT, имеем указатель на DRIVER_OBJECT. Теперь заменим адреса обработчиков и функций выгрузки драйвера на свои:

NTSTATUS HookDevice(LPWSTR lpDevice)

gDriverObject = DeviceObject-> DriverObject;

gDeviceControl = gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL];
gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL] = HookDispatch;

gInternalDeviceControl = gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL];
gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = HookDispatch;

gDriverUnload = gDriverObject->DriverUnload;
gDriverObject->DriverUnload = HookUnload;

В последней строчке вызывается функция ObfDereferenceObject, которая уменьшает количество ссылок на файловый объект. Это необходимо делать для корректной выгрузки драйвера, чтобы не было утечки ресурсов и аналогичных ошибок.

Так как указатель на объект драйвера защиты сохранeн, то чтобы снять ловушку, нужно просто восстановить прежние обработчики IRP-пакетов:

gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL] = gDeviceControl;
gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = gInternalDeviceControl;
gDriverObject->DriverUnload = gDriverUnload;

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

Теперь необходимо реализовать правильную выгрузку драйверов. Так как система защиты по каким-либо причинам может закончить свою работу раньше нашего драйвера, то чтобы избежать краха системы из-за неверных указателей, обработаем это событие в функции HookUnload:

void HookUnload(PDRIVER_OBJECT DrvObj)

Здесь происходит восстановление полей структуры DRIVER_OBJECT, и передаeтся управление на оригинальный код выгрузки драйвера перехваченного устройства.

Аналогично поступаем, если наш драйвер завершает работу раньше системы защиты. Только нужно высвободить захваченные ресурсы и не вызывать сохранeнный gHookUnload.

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа
Принцип работы эмулятора

Перехватчик

Зная основные принципы простейшего перехвата IRP-пакетов, приступим к реализации пока только самого перехватчика для дальнейшего анализа. Для этого создадим объект драйвера, который содержит символьное имя (например DosDevicesHook) и точки входа CREATE, CLOSE, READ.

DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverDispatch;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DriverDispatch;
DriverObject->MajorFunction[IRP_MJ_READ] = DriverDispatch;
DriverObject->DriverUnload = DriverUnload;

Это нужно для того, чтобы работать с нашим перехватчиком как с файлом, используя функции CreateFileReadFileCloseHandle. При такой реализации обмена данными между приложением и перехватчиком невозможно сразу же отправить их пользовательской программе, поэтому необходимо создать некоторую структуру для хранения необходимых данных о пойманном пакете. Например односвязный список, как это реализовано мной. Теперь следует определиться, какую информацию нужно буферизировать. Это общая информация о пакете (тип, флаги, прочее) и, конечно, буферы. Также можно добавить время перехвата. При копировании содержимого буферов нужно помнить об их типе, иначе — крах. Забегая вперед, отмечу, что драйвер защиты использует буферизированный ввод-вывод, это немного упрощает код.

if (idlTail->IrpData.InputLength)
<
idlTail->InputBuffer = ExAllocatePool(NonPagedPool, idlTail->IrpData.InputLength);
RtlCopyMemory(idlTail->InputBuffer, Irp->AssociatedIrp.SystemBuffer, idlTail->IrpData.InputLength);
>

if (IoSL->MajorFunction == IRP_MJ_DEVICE_CONTROL)
Status = pHookedDriverDispatch[IRP_MJ_DEVICE_CONTROL]( DeviceObject, Irp);

if (idlTail->IrpData.OutputLength)
<
idlTail->OutputBuffer = ExAllocatePool(NonPagedPool, idlTail-> IrpData.OutputLength);
RtlCopyMemory(idlTail->OutputBuffer, lpBuffer, idlTail->IrpData.OutputLength);
>

Осталось реализовать чтение из драйвера. Так как пакет содержит буферы, чье содержимое представляет интерес, то размер сообщений заранее не известен. Поэтому поступим следующим образом: при первом чтении получаем общую информацию о пакете и размере буферов; при повторном читаем содержимое, удаляем звено из списка пакетов и не забываем про спиновые блокировки для последовательной работы с данными:

idlTemp = idlHead->ldlNext;
ExFreePool(idlHead);
idlHead = idlTemp;
if (!idlTemp)
idlTail = NULL;
>

Когда перехватчик готов, запускаем сначала его, а затем — защищенное приложение с ключами и без. Из полученных логов становится видно, какие управляющие коды посылаются и их результаты. Также можно видеть, что запросы и ответы на два различных кода (9c402450, 9c4024a0) не изменяются. Казалось бы, можно построить табличный эмулятор, но после серии запусков убеждаемся, что это невозможно, так как содержимое буферов различно, и неизвестно, как оно образуется.

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа
Перехваченные пакеты без ключа

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа
Перехваченные пакеты с ключом

Затем возможны несколько вариантов дальнейших действий:

Оба варианта дают необходимую информацию. Итак, оказывается, содержимое пакетов шифруется публичным симметричным алгоритмом AES (Advanced Encryption Standard). Логичной целью является получение ключа шифрования.

Но если еще больше углубиться в изучение устройства системы защиты, то окажется, что аппаратный ключ имеет уникальный номер и содержит всю необходимую информацию, но для доступа к нему требуются программные ключи.

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа
Пример дампа ключа

Поэтому первое, что нужно сделать, это получить ключ. Поставленную задачу может решить обычный брутфорс:

unsigned short Key;
unsigned char RefKey[8], VerKey[8];

for (Key = 0; Key WORD HL_LOGIN(WORD ModAd, Word Access, Byte *RefKey, Byt *VerKey);
WORD HL_LOGOUT(void);

Первая функция служит для открытия сессии работы с ключом защиты посредством драйвера, вторая – завершает сессию. Это прототипы старых версий HASP SDK, но работают они и с новыми типами ключей, так как разработчики обеспечили обратную совместимость.

Новый API мало отличается от старого, и это никак не сказывается на принципе работы брутфорса. Подробную документацию Hasp API, готовые реализации брутфорса и дампера ключей можно найти на диске.

Обработчик

Теперь есть все необходимое для корректной работы модуля. Осталось реализовать подстановку лицензионной информации. Причем можно перехватывать лишь некоторые IRP-пакеты. Здесь все уже зависит от конкретной версии ключа и защищаемой программы.

Дамп ключа лучше не встраивать в драйвер, а загружать динамически из реестра. Лучше основываться на уже готовом перехватчике запросов, так будет проще отладить драйвер, отправляя перехваченные/подставленные пакеты на анализ пользовательскому приложению. Принципиально логика перехватчика будет иметь такой вид:

Пакет запроса к драйверу находится в криптованном виде, поэтому для доступа к его содержимому требуется расшифровать, а затем зашифровать. Возникает вопрос: каким алгоритмом и каким ключом выполнено шифрование? Покопавшись в исходниках от создателей системы, можно получить следующий первичный алгоритм шифрования пакета:

void Encrypt(BYTE * Buffer)
<
WORD Seed = ((WORD)Buffer + 0x5e);
WORD Ver = ((WORD)Buffer + 0xba);

if (Ver)
<
for (int i = 0; i > 15) | (Seed > 15) | (Seed void Decrypt(BYTE* Buffer)
<
WORD Seed = ((WORD)Buffer + 0x5e);
WORD Ver = ((WORD)Buffer + 0xba);

Затем следует ещe один этап преобразования данных, более сложный и уже полностью зависящий от структуры запроса. Тут не обойтись без дизассемблера, придется покопаться в бине и позаимствовать немного кода у создателей. Это непросто, так как код драйвера защиты сильно обфусцирован, но он не отличается разнообразием уловок. Достаточно будет декомпилировать драйвер не полностью, а только лишь некоторые кусочки кода.

В заключение отмечу, что построение табличного эмулятора, основанного на перехвате DeviceIoControl, — достаточно трудная задача. Но такой принцип эмулятора можно использовать и на другом уровне взаимодействия: создать виртуальную USB-шину.

Заключение

Это не единственный способ избавиться от системы защиты. Существуют и другие, более совершенные методы. Изложенные в статье принципы можно использовать и для анализа работы драйверов, перехватывая IRP-пакеты. Таким образом можно добавить неплохой инструмент в свой сделанный на коленке набор. Удачи!

Источник

Эмулятор ключа защиты

Как собрать эмулятор ключа защиты — инструкция по снятию дампа и эмуляции аппаратных ключей, используя эмулятор Multikey

1) Для снятия дампа с ключа нужно знать MODAD — параметр, который можно узнать при помощи (А) Toro Aladdin Dongles Monitor или (Б) брутфорсом, то есть перебором

А) распаковываем архив haspmon32.zip
запускаем Toro Aladdin Dongles Monitor.exe
запускаем вашу программу, которая проверяет ключ
Toro Aladdin Dongles Monitor показывает нам MODAD

Б) распаковываем в C:\dumper архив hl-dump.zip
открываем командную строку (Пуск — Выполнить — cmd)
пишем в ней
C:
cd C:\dumper
hl-dump.exe /BF

дампер подбирает MODAD и выплевывает два файла xxxx.dat и xxxx.reg где xxxx — это MODAD
Внимание, это процесс небыстрый, иногда до 9 часов, так что ждите

2) Если мы узнали MODAD первым способом, то снимаем дамп, если вторым, то дамп уже снят.
для этого выполняем пункт 1.Б, но вместо команды hl-dump.exe /BF вбиваем hl-dump.exe /DUMP 0xMODAD где MODAD заменяем на найденное нами значение, например
HL-DUMP.EXE /DUMP 0x409

Теперь нужно узнать seed`ы и переконвертировать дамп в формат, понятный эмулятору.

3) распаковываем hl-solver.zip корень диска C:
копируем xxxx.dat полученный ранее в папку C:\trial_solver_directory_demo_version_only
запускаем C:\hl_solver.exe
ВМЕСТО НУЛЕЙ вводим MODAD
жмем Find seeds
прога долго переваривает и выдает три значения сидов
записываем их куда-нибудь, потом пригодятся

4) распаковываем UniDumpToReg.rar
запускаем UniDumpToReg.exe
жмем Open
выбираем xxxx.dat
ставим галочку на vUSBbus Hardlock
жмем Go
прога выплевывает 0000xxxx.reg

Если прога не запускается и выдает ошибку, что приложение не настроено, установите vcredist_x86.exe

теперь отредактируем 0000xxxx.reg и всё, дело сделано
Внимание! все изменения вносятся в 0000xxxx.reg

5) открываем в текстовом редакторе 0000xxxx.reg и xxxx.reg
заменяем
Services\Emulator\Hardlock\Dumpна
на
MultiKey\Dumps

заменяем нули в «ID»=dword:00000000 на значение такого же параметра из xxxx.reg
дописываем в 0000xxxx.reg три строчки
«Name»=»имя проги»
«Created»=»дата создания дампа»
«Copyright»=»© 2018 UseHelp.org»

Обратите внимание на строчки

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

Источник

Захват криптоключей Mifare и копирование ключей домофонов IronLogic своими руками

Внимание! Данная статья создана исключительно в образовательных целях. Напоминаем, что любое проникновение в информационные системы может преследоваться по закону.

У многих, интересующихся технологией MIfare, наверняка есть простейшее устройство для чтения-записи карт и брелоков Mifare, состоящее из модуля PN532 и USB-UART адаптера:

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа

Путем несложной и недорогой доработки это устройство можно заставить захватывать от
считывателя данные аутентификации, с помощью которых и рассчитываются криптоключи, так необходимые для чтения и копирования. Существуют и серийно выпускаемые приборы для этой цели — SMKey, Proxmark3, Chameleon и ещё некоторые. Это приборы с множеством функций, удобные, но недешевые.

Я предлагаю вашему вниманию более бюджетный вариант на основе подобного «малого джентльменского набора» из модуля PN532 и USB-UART адаптера, позволяющий захватывать данные от считывателя Mifare, например домофона, и рассчитывать криптоключи, с которыми считыватель обращается к метке.

Разработанное устройство в своей основе имеет недорогую, «народную» отладочную плату на основе процессора STM32F103C8T6, прозванную ещё «BluePill» c подключенными к ней модулем PN532 и USB-UART адаптером. Подключается данный агрегат через USB-OTG кабель к смартфону на Андроиде. Собирается всё это в макетном варианте без пайки, с помощью перемычек и имеет примерно такой вид, хоть и непрезентабельный, но вполне рабочий:

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа

Схему сборки очень проста и представлена в текстовом виде:

SCK_____________________PA5(SPI1_SCK)
MISO____________________PA6(SPI1_MISO)
MOSI____________________PA7(SPI1_MOSI)
SS______________________PB0(GPIO_OUTPUT)
SIGIN___________________PB11(TIM2_CH4)
SIGOUT__________________PA12(TIM1_ETR)
SIGOUT__________________PA15(TIM2_ETR)
VCC_____________________+5V
GND_____________________GND

RX______________________PA9(USART1_TX)
TX______________________PA10(USART1_RX)
+5V_____________________+5V
GND_____________________GND

ВАЖНО! Переключатели интерфейса PN532 должны быть установлены в режим SPI! Прошить STM32 можно с помощью утилиты FlashLoaderDemonstrator через существующий USB-UART адаптер.
Внимание для работы с новой версией прошивки необходимо изменить схему подключения вывода SIGOUT на PA12 и PA15 (Ранее было на PA0 и PA12)!

Вот демонстрация захвата криптоключа от имитатора считывателя домофона(Arduino + PN532):

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

Следующая вкладка программы «Запись на Classic» использует возможность ранних версий считывателей IL записывать копии на дешевые заготовки Mifare Classic. Этот способ основан на том, что считыватель IL после авторизации посылает домофону не оригинальный UID метки, а информацию, записанную в первом блоке (в общем случае совпадающую с UID оригинала). Для этого мы должны захватить и рассчитать криптоключ метки, которая послужит заготовкой, закрыть с его помощью нулевой сектор, а в первый блок этой метки записать четыре байта UID метки, которая служит прототипом. Для этого нам даже не надо захватывать криптоключ оригинала и снимать его дамп, достаточно узнать его UID, но это справедливо только в том случае, если оригинал — «оригинальный», а не является копией, тогда всё-таки придется читать первый блок и уже его записывать в копию. Чтобы было понятнее, рассмотрим такой пример – предположим, что мы хотим сделать копию оригинального ключа с UID 0xEBD52AC5, который записан и в первом блоке оригинала, на обычную метку Mifare Classic с UID, допустим, 0x12345678. Для этого мы с помощью представленного устройства, метко обозванного одним товарищем «Шайтан-Машиной», находим криптоключ именно для этого UID и именно для того объекта (подъезда, дома …), который нам нужен. Пусть криптоключ получился 0xABCDEF098765, тогда отредактируем нулевой сектор дампа копии следущим образом:

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа

В первый блок запишем UID оригинала 0xEBD52AC5, а в третий блок шесть байт криптоключа, найденного для этой заготовки — 0xABCDEF098765. Запишем дамп в заготовку, и получим копию домофонного ключа. Примерно так прибор SMKey делает копии IronLogic на обычные Mifare Classic, и именно так поступает данная программа записи. В поле «Код» заносим вручную или считываем с оригинального ключа 4 байта UID, которые будут записаны в 1-й блок копии. Стартуем и, далее следуем подсказкам программы. Сначала считываем UID заготовки, потом подносим устройство к домофону и захватываем данные аутентификации. После окончания расчета программа предложит поднести заготовку для записи данных. Если будет найдено более одного криптоключа, то после записи первого варианта будет дана возможность проверить полученную копию. Если копия не подходит, то следует попробовать следующий рассчитанный ключ, или стереть (привести в исходное состояние) заготовку для дальнейшего использования. Копия может не работать также из-за того, что неправильно определили код, который записывается в 1-й блок копии – например если попытаетесь записать реальный UID не оригинального брелока, а его копии, сделанной по вышеописанному методу.В таком случае надо использовать не UID метки, а данные из 1-го блока, которые можно получить в разделе «Копирование сектора».

Этот способ не будет также работать для последних версий ПО считывателей IL. В таком случае копию можно сделать, скопировав полностью 0-й сектор ( 4 блока) на заготовку, позволяющую записывать 0-й блок с помощью раздела приложения «Копирование сектора». Здесь также сначала находим криптоключ оригинала, читаем его нулевой сектор и затем пишем на заготовку. Ввиду отсутствия под рукой заготовок ОТР и ОТР-2.0, эта функция пока тестировалась только на заготовках ZERO, хотя новые версии считывателей требуют использовать ОТР-2.0.

Ну и на закуску – раздел приложения «Запись UID» позволяет изменять UID, восстанавливать испорченный 0-й блок и сбрасывать на дефолт криптоключи заготовок ZERO.

Итак – коротко подытожу. Чтобы сделать такое устройство, приобретаем или ищем по своим загашникам модуль PN532, любой из USB – UART адаптеров FTDI, PL2303, CH340 или CP2102, отладочную плату STM32F103C8T6, полтора десятка перемычек, USB-OTG переходник и смартфон(планшет) на Андроиде с OTG. Собираем по вышеприведенной схеме само устройство, прошиваем *.bin файлом STM32 и устанавливаем *.apk приложение из архива
на смартфон. Для корректной работы приложение на смартфоне должно запускаться при подключении USB-UART адаптера или по умолчанию, или выбором вручную, иначе приложение не получит доступ к адаптеру.

Несколько слов хочу сказать по поводу модуля PN532 – не все эти модули «одинаково полезны»! Из трёх модулей(таких как на фото выше), приобретенных мной, один плохо читал и записывал метки, особенно ZERO и ОТР-2.0, но нормально работал в пассивном режиме со считывателями домофонов, другой вел себя с точностью до наоборот и только третий более-менее справлялся и с метками и с домофонами(правда хуже чем первые два). Возможно мне не повезло и именно эта партия модулей оказалась не лучшего качества, но жалуются на них и другие люди. Впрочем – кому как повезет. Это я к чему говорю? В продаже появились модули PN532 немного другой компоновки, которые дороже, но, по отзывам не имеют таких проблем:

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа

Если же кому-нибудь попадется PN532, который плохо пишет-читает метки, то могу посоветовать добавить к устройству модуль RC522, стоящий сущие копейки, но прекрасно выполняющий свои функции, по следующей схеме:

RST______________________PB12(GPIO_OUTPUT)
SCK______________________PB13(SPI2_SCK)
MISO_____________________PB14(SPI2_MISO)
MOSI_____________________PB15(SPI2_MOSI)
SDA______________________PA8(GPIO_OUTPUT)
VCC______________________+3.3V
GND______________________GND
В этом случае PN532 будет работать только при захвате данных от считывателя, а вся тяжесть работы с метками ляжет на плечи RC522. Обратите особое внимание — RC522 необходимо подключать на напряжение только 3.3В!

P.S. Обновил ПО устройства — добавилась возможность эмуляции Mifare Classic 1K и создания базы данных меток для нескольких объектов старых домофонов IronLogic. В эмулятор можно загрузить бинарный файл дампа размером 1К, а на вкладке «База меток» можно ввести сколько надо UID-ов пустых заготовок, затем захватить для них криптоключи на различных адресах и потом уже записывать их не выходя к объекту. UID и криптоключ А 0-го сектора записанной метки сохраняется в базе данных, что позволяет при необходимости просто стереть метку, которая была записана на этом устройстве.

UPD. Очередное обновление устройства. Основное — сейчас устройство научилось производить захват и расчет криптоключей от последних версий считывателей IL, вплоть до новых 4-полосных считывателей с последней актуальной прошивкой 7.20 выложенной на сайте!
Еще раз обращаю внимание! Схема подключения модуля PN532 для новой прошивки KeyToolsSTM.bin немного изменена: теперь SIGOUT подключен на PA12 и PA15 контролера STM32, а не на PA12 и PA0, как раньше!

Вместо дорогого и капризного модуля PN532 можно сделать несложную антенну с модулем сопряжения. Схема приведена на рисунке:

Как сделать дамп электронного ключа. Смотреть фото Как сделать дамп электронного ключа. Смотреть картинку Как сделать дамп электронного ключа. Картинка про Как сделать дамп электронного ключа. Фото Как сделать дамп электронного ключа

За основу взята статья Простой Mifare-сниффер. Конструкция самой антенны хорошо описана в статье, у меня же неплохо работает бескаркасная катушка диаметром 30мм из 9 витков одножильного изолированного провода, взятого от витой пары интернет кабеля. Прошивка для этой схемы требуется уже другая — KeyTools_WPN.bin. Обратите внимание — такая антенна работает только в пассивном режиме, т.е. только для захвата данных от считки и эмуляции метки. Чтобы читать-записывать метки необходимо дополнить устройство модулем RC522, схема подключения которого приведена выше.
Важное дополнение — вывод PA12 отладочной платы уже подтянут к 3.3В резистором 10кОм, именно исходя из этого выбран номинал R3 = 4к7, но на некоторых платах STM подтягивающий резистор имеет другое сопротивление! Рекомендую замерить сопротивление между РА12 и 3.3В на плате и если оно отличается от 10кОм, то перепаять резистор!

Появилась так же возможность подключения устройства к смартфонам без OTG — для этого вместо USB — UART адаптера подключается Bluetooth модуль типа HC-05, HC-06, а на смартфоне устанавливается приложения KeyToolsBT. Предварительно на Bluetooth модуле с помощью АТ команд необходимо установить скорость обмена 115200! Питание можно организовать от аккумулятора через повышающий преобразователь 5В.

Устройство обсуждается на форуме: Kazus. По всем вопросам обращайтесь туда.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *