(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Как снять защиту с файла, созданного под ACCESS 2000

Источник: Leadersoft

Существует несколько программ, которые снимают пароль с файлов Access. Вот адреса сайтов. www.lostpassword.com, www.elcomsoft.com и другие. В основном они показывают пароль длиной от 2-16 символов (зависит от версии программы). Можно было ограничиться этим ответом, но так как мы занимаемся детально вопросами программирования и защиты базы данных рассмотрим его более серьезно.
   Описание алгоритма пароля для Access 2000 у меня нет, хотя кусочки информации по шифрованию Аccess 97 в англоязычном Интернете есть. Сущность информации в том, что пароль шифруется простейшим алгоритмом XOR и его смещение от начала файла = 67 байт. Но этих данных явно недостаточно для расшифровки. Поэтому, попробуем составить программу, которая сама проанализирует пароль. Сущность предложенного метода заключается в многократном сравнении файлов с паролями и без них, и поиске закономерностей. Все результаты эксперимента сохраняются в таблице и используются для анализа пароля. Примеры программ для определения пароля Access 2000 записаны в 7 примере файла: la_prot.mdb
    Таким образом, мы сможем определить а) длину пароля; б) смещение пароля от начала файла; в) позицию меняющихся байтов г) маску пароля (слово для расшифровки). Используя функцию  funAnalysisPassword, можно получить следующую информацию.
   1. Cмещение пароля от начала файла 67 байт.
   2. Маска пароля составляет 40 байт (длина пароля 20 символов)
   3. Байты маски:
 [67 - 69]       055 056 212 156 250 163 206
 040 230 118 038 138 096 049 004 123 054
 144 226 223 177 018 100 019 067 170 063
 177 051 081 241 121 091 247 037 124 042
 ...
 [115-117]
    Байты Маски [67-69] меняются в зависимости от даты, установленной на компьютере. Например, на 17.03.2001 = 228,107,236. Проверено, что 67 байт - меняется ежедневно, 68 байт - ежегодно, а 69 байт имеет еще более длительный период изменения. Байты [115-117] меняются при каждом создании базы данных. Отсюда можно сделать - что это байты, которые сохраняют некоторую информацию по дате создания базы данных.
   4. Алгоритм шифрования XOR.
Пример зашифровки: p XOR m = ?.
Пример расшифровки: ? XOR m = p. В примерах используются следующие обозначения: p-байт пароля базы данных, m - байт маски пароля, ? - зашифрованный байт.
   5. Символы хранятся в формате UNICODE, т.е 2 байта на символ, поэтому необходимо провести конвертацию строки пароля. Это делается так: password=StrConv(s, vbFromUnicode)
   Таким образом, для нахождения пароля достаточно определить байты 67-69, используя информацию из байтов 115-117. Задачка очень интересная и оригинальная, так что подумайте немного сами. В приводимых же примерах la_prot маска пароля определялась по другому, приблизительно. Для этого смотрите функцию funGetMaskPassword. Сущность метода. а) читаем дату создания файла FileDateTime(myDataBase), б) устанавливаем время  Time = timeDB, в) создаем незащищенную базу и читаем маску в массив, г) возвращаем текущее время и удаляем лишние файлы.
   После того как файл расшифровывался, запускалась программа для тестирования пароля. Используя эту программу, можно находить некоторые байты пароля обычным перебором символов. Код ее приведен ниже:
Public Function funTestPassword(strMdb As String, strPassword As String) As Boolean
Dim cnn As New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMdb & ";Mode=Read;Jet OLEDB:Database Password=" & strPassword
cnn.Open
' Далее идет проверка на ошибку
   PS. В примере 7 (la_prot.mdb) Вы найдете и другие функции, работающие с паролем. Использование их необязательно, т.к. если Вы знаете пароль, то его можно удалить или изменить, используя Access, но для проверки разных алгоритмов могут пригодиться.

Вопрос 59 (14.11.2000). Вот столкнулся с такой проблемой. Как по Access 97 (из своей программы) вызвать - Диспетчер связанных таблиц? Как в Access 2.0 делается знаю, но в 97 это уже не проходит.
   Ответ. Варианты создания диспетчера таблиц есть на сайте, подойдут и для Access 97. Для Access 2000 можно запустить команду: Application.CommandBars("Menu Bar").FindControl(, 3996, , , True).Execute
   PS: Команда будет работать в том случае, если у Вас есть связанные таблицы, и Диспетчер связанных таблиц установлен при инсталляции Access.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 25.03.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft Office для дома и учебы 2019 (лицензия ESD)
Microsoft 365 Business Standard (corporate)
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Adobe Photoshop: алхимия дизайна
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100