Домашняя страничка Стефурак П.Б. Промзона. О стойкость паролей zip архивов, при использовании unzdll.dll ZipDll.dll
 
     Домашняя Промзона Спальный район  

Промзона \ О стойкость паролей zip архивов, при использовании unzdll.dll ZipDll.dll.
О стойкость паролей zip архивов, при использовании unzdll.dll ZipDll.dll для доступа к защищенным паролем zip архивам.

 

Этот текст - не более чем некоторые мысли об эффективности использования защищенных паролем ZIP архивов в программном обеспечении, использующем для доступа к ним unzdll.dll ZipDll.dll.
Тут не будут "разжеваны" многие мелкие детали. Предполагается, что если Вам это интересно, то Вы в курсе как работает механизм dll, windows, что такое C и Delphi.
О чем речь
Существует масса программ, использующих ZIP архивы для хранения данных. Одна из таких программ - универсальный движок управления данными (она называется по другому, но тут я не буду приводить оригинального названия программы). Обновление данных этой программы осуществляется при помощи файлов с расширением .RIC.
Данные файлы представляют собой переименованные и защищенные паролем ZIP архивы файлов базы данных СУБД Advantage Local Server. Доступ из программы к файлам RIC осуществляется в свою очередь через библиотеки unzdll.dll и ZipDll.dll. Дополнительно, библиотеки unzdll.dll и ZipDll.dll, а так же остальные исполняемые файлы и библиотеки программы упакованы UPX 1.25.
Каким образом
Для исследования парольной защиты данных программы, был использован тот же метод, который использовался для исследования стойкости парольной защиты RAR архивов при доступе к ним через unrar.dll, т.к. поиск пароля перебором или иным способом представляется длительным и трудоемким.
Получить список функций, экспортируемых DLL библиотекой, не представляет труда. Сложность представляет получение списка передаваемых в функцию данных! По этому, интерфейсы библиотек unzdll.dll и ZipDll.dll, были получены из проекта "Delphi interface to the ZipDll.dll & UnzDll.dll libraries created by Eric W. Engler".
Фактически необходима только библиотека UnzDll.dll, интерфейс которой выглядит следующим образом:
  • UnzDllExec(UnZipRec:pUnZipParams):DWord;
  • GetUnzDllVersion:DWord;
  • GetUnzDllPrivVersion:DWord;
    Последние 2 функции возвращают какие-то номера версий, и нас особо не интересуют. Но реализовывать и обрабатывать их необходимо, т.к. основная программа к ним обращается. Первая функция - непосредственная работа с ZIP (RIC) архивом. В качестве аргумента данная функция библиотеки принимает структуру pUnZipParams, описанную в файле ZipDlls.pas. В одном из полей (ZipPassword) в данной структуре, из основной программы, и передается пароль для распаковки архива!
    Собираем
    Для реализации теории на практике, стираем из корневой папки программы файл UnzDll.dll (или где найдем такой или очень на него похожий файл, т.к. разработчики ПО очень любят в качестве дополнительной защиты переименовывать файлы и прятать их скажем в c:\windows\system32\).
    Создаем проект dll в Delphi 2005 , сохраняем его под именем UnzDll (для того, чтобы результат компиляции назывался UnzDll.dll), в качестве целевой директории задаем папку родительской программы, или папку, где обитал оригинальный UnzDll.dll.
    В параметрах отладки проекта задаем в качестве host-application оригинальный исполняемый файл исследуемой программы (в случае с исследуемой программой их 2, и можно использовать любой). Теперь при запуске проекта будет работать оригинальная программа, а при обращении ее к функциям библиотеки UnzDll.dll контроль будет передаваться нашей библиотеке-заглушке под управлением Delphi!
    Текст библиотеки-заглушки не сложен и очевиден, но на всякий случай приведен тут.
    Запускаем получившийся "велосипед" и через несколько секунд получаем пароль RIC (ZIP) архивов данных программы!
    Результаты
    Выглядит пароль примерно следующим образом: "rookrookmki".
    Пароль разработчиками выбран на удивление не сложным и не очень длинным, видимо в расчете на то, что его взлом не повлечет катастрофических последствий, т.к. после распаковки RIC (ZIP) архива, файлы СУБД Advantage Local Server в открытом виде становятся доступными в открытом виде, а программа имеет развитые средства экспорта информации.
    В заключение можно сказать, что стойкость пароля ZIP архива, при доступе к нему с помощью библиотек unzdll.dll и ZipDll.dll не выдерживает никакой критики.

    Delphi 2005
    Текст библиотеки-заглушки

     
  •