Открываем базы данных MDB

Защита и взлом баз данных Access

Открываем базы данных MDB

Данный способ защиты позволяет установить пароль на открытие БД, для всех пользователей. Для его создания необходимо открыть файл БД в “монопольном” режиме и выбрать пункт меню Сервис / Защита / Задать пароль базы данных. Для работы с такой базой данных в MS Access потребуется вводить пароль. Вот пример работы с файлом БД, используя DAO или ADO.

Public Sub TestDAO()
    Dim mWS As DAO.Workspace
    Dim mDB As DAO.Database
    Set mWS = DBEngine.Workspaces(0)
    Set mDB = mWS.OpenDatabase _
        (“C:\a97.mdb”, True, True, “;pwd=123”)
End Sub

Public Sub TestADO()

    Dim CnDB As New ADODB.Connection    CnDB.Open “Provider=Microsoft.Jet.OLEDB.4.0” & _              “;Data Source=C:\a97.mdb” & _              “;Jet OLEDB:Database Password=123”

End Sub

Это самый не надёжный способ защиты баз данных. Существует достаточное количество бесплатных и платных утилит, отображающих пароль. В том числе доступны исходники кода на VB позволяющие прочитать такой пароль. В прочем не всё так плохо. Однажды мне встретилось оригинальная модификация этого способа защиты, о котором речь пойдёт ниже.

Данный способ позволяет ввести дополнительный уровень ограничений, связанных с работой БД Access. Основан на создании файла рабочих групп, в котором определяются имена пользователей, их пароли и права на работу с различными объектами БД.

Последовательность действий для создания защищённого файла:

  • Создание нового файла рабочих групп. Для этого в 97-2000 Access запускается программа WRKGADM.EXE, а в 2003 Access необходимо выбрать пункт меню “Сервис / Защита / Администратор рабочих групп”. В администраторе жмём кнопку “Создать”, указываем имя, организацию и код группы. Указываем имя и расположение создаваемого файла. Например:Имя: test_ИмяOpгaнизaция: ~Кoд paбoчeй гpyппы: cтpoчкa 20 cимвoлoв.Фaйл paбoчeй гpyппы: C:\test\gr.mdw
  • Создание ярлыка, для запуска ms Access с использованием созданного mdw файла. Ярлык должен содержать строку: [путь к MSACCESS.EXE] /WrkGrp [путь к файлу mdw]. Например: “C:\Program Files\MSOffice2003\OFFICE11\MSACCESS.EXE” /WrkGrp C:\test\gr.mdw
  • Запустив Access c помощью этого ярлыка необходимо открыть пункт меню “Сервис / Защита / Пользователи и группы”. В открывшемся диалоговом окне необходимо создать нового пользователя и добавить его в группу “Admins”. Например, был создан “test_Пользователь” с кодом “987654321”
  • Теперь необходимо открыть Access от имени созданного пользователя. Для этого необходимо добавить в созданный ярлык строку: /user [имя пользователя]. Например: “C:\Program Files\MSOffice2003\OFFICE11\MSACCESS.EXE” /WrkGrp C:\test\gr.mdw /User test_Пользователь
  • Запускаем Access c помощью этого ярлыка. Теперь созданному пользователю необходимо присвоить пароль. Это делается в том же диалоге “Пользователи и группы”. Допустим пользователю “test_Пользователь” присвоен пароль “test_Пароль”. Далее, необходимо создать новую БД. При этом владельцем этой базы, а также всех создаваемых или импортируемых объектов (таблиц, запросов и.т.п.) будет пользователь имя которого было указано в ярлыке.
  • После того, как БД будет создана желательно удалить “Admin” из группы “Admins” и отобрать у группы “Users” права на объекты БД и на открытие базы.
  • Добавляем в ярлык название защищённой БД. Например: “C:\Program Files\MSOffice2003\OFFICE11\MSACCESS.EXE” C:\test\db2k_test.mdb /WrkGrp C:\test\gr.mdw /User test_Пользователь /pwd test_Пароль

Вот пример открытия БД защищённой на уровне пользователей с помощью DAO или ADO

Public Sub TestDAO()
    Dim mWS As DAO.Workspace
    Dim mDB As DAO.Database    DBEngine.SystemDB = “C:\test\gr.mdw”

    Set mWS = DBEngine.CreateWorkspace _

        (“”, “test_Пользователь”, “test_Пароль”, dbUseJet)

    Set mDB = mWS.OpenDatabase _

        (“C:\test\a97.mdb”, True)
End Sub

Public Sub TestADO()

    Dim CnDB As New ADODB.Connection    CnDB.Open “Provider=Microsoft.Jet.OLEDB.4.0;” & _              “Data Source=C:\test\a97.mdb;” & _              “Jet OLEDB:System database=C:\test\gr.mdw;” & _              “User ID=test_Пользователь;” & _              “Password=test_Пароль;”

End Sub

Снятие такой защиты.
Создать новую БД. В ярлыке прописать путь к этой БД, MDW файл защищённой БД имя и пароль владельца. Открыть с помощью этого ярлыка новую БД. Импортировать в неё таблицы из защищённой, после чего сменить для всех объектов БД владельца на Admin.

Для того, чтобы узнать имя и пароль владельца БД можно воспользоваться специализированными программами, описанными в обзоре Пароли Access. При отсутствии файла рабочих групп его можно восстановить. Для этого потребуется узнать имена и идентификаторы владельцев объектов БД.

Эта информация содержится в файле базы данных и может быть извлечена с помощью таких программ как AOPR. Используя эти данные создаётся новый файл. (последовательность описана выше)

Совсем не обязательно использовать программы, позволяющие определить пароль БД или пользователя. Часто программисты совсем не заботятся о сокрытии пароля в тексте программы.

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

Проведя поиск Unicode строк 'User ID='; 'Password='; 'Database Password=' или 'pwd=' можно найти имя пользователя, его пароль и пароль базы данных.

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

Нестандартные способы защиты

Достаточно простой способ ввести в заблуждение – изменение расширения файла БД. Увидев незнакомое расширение, не каждый попытается выяснить природу этого файла.

Кроме этого появляется возможность связать это расширение с вашей программой, так чтобы при клике по файлу запускалось ваше приложение, а не Access.

Желательно открывать такой файл с монопольным доступом, так как в этом случае не будет создаваться ldb файл.

В первую очередь этот способ нацелен на противодействие определению паролей с помощью специальных программ. Одна база с такой защитой хорошо попортила мне нестроение. Теперь я попорчу настроение её авторам рассказав об этой защите. Способ основан на том, что пароль БД формата Access 2000 и 2002-2003 – текстовая строка в формате Unicode. При этом, нет ни каких ограничений на её содержимое.

Стандартный способ установки и использования пароля БД подразумевает его ввод с клавиатуры в диалоговом окне. Если стока пароля содержит непечатные символы, то они не будут корректно отображены программой открывающей пароли БД. С другой стороны этот пароль нельзя ввести в диалоговом окне при открытии БД в MS Access.
Но и про Access 97 я не забыл.

Дело в том, что в спецификации баз данных и в справке по DAO 3.60 указано, что максимальное число символов в пароле – 14. Но на самом деле их может быть 20. При этом и сам Access 97 не допускает ввода строк пароля более 14 символов. В спецификации Access 2003 также сказано про 14 символов, но программа допускает ввод всех 20.

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

Для установки такого пароля потребуется использовать программу, использующую метод CompactDatabase библиотек ADOX или DAO.

Взлом защиты.

  • Во-первых, можно воспользоваться AccessRecovery.
  • Во-вторых, можно попытаться определить пароль БД с помощью специальных программ. В обзоре Пароли Access приводится сводная таблица по их возможностям.
  • В-третьих, можно узнать пароль, проанализировав код программы в отладчике. Каков бы ни был пароль, он всё равно передаётся как текстовая строка в методе открытия БД. При наличии определённого опыта – это не очень сложная задача. Когда мне впервые встретилась подобная защита – пароль удалось найти, используя отладчик OllyDbg, найдя место создания ADODB.Connection
  • Узнать или изменить пароль БД можно, не прибегая к помощи специальных программ. В Access 97 пароль получается сложением по XOR пароля с 20 байтной последовательностью. Значения этих байт можно получить из любого не защищённого паролем mdb файла. Начиная с Access 2k, в связи с использованием Unicode, для хранения 20 символов пароля отведены 40 байт. При шифровании также используется сложение по XOR, но для получения последовательности байт соответствующей пустому паролю необходимо создать файл с датой исследуемой БД. Полученные байты можно вписать в исследуемый файл и обнулить пароль, либо сложить их с аналогичными байтами исследуемого файла и получить значение пароля.

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

Способ защиты основан на модификации первых байт файла. Таким образом, перед открытием БД в её файл записывается правильный заголовок, хранимый в программе, а после закрытия возвращается неправильный. При попытке открыть файл БД с помощью ms Access появляется сообщение об ошибке.

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

Вот пример такого преобразования:

Public Sub BaseProtect(sPath As String, bLock As Boolean)

    Dim iFn As Integer
    iFn = FreeFile()
    Open sPath For Binary Access Write As #iFn
    Put #iFn, 5, CStr(IIf(bLock, _        “ProtectDataBase”, “Standard Jet DB”))

    Close #iFn

End Sub

Метод не достаточно эффективен, так как программу, работающую с БД, можно прервать искусственно и на диске останется не защищённая БД. Поэтому стоит его использовать только в сочетании с другими способами.

Этот способ – дальнейшее развитие идеи модификации заголовка файла с целью противодействия программам, читающим пароли. Метод основан на том, что для работы с БД Access 97 и 2k программы используют разные алгоритмы чтения пароля и при этом пытаются самостоятельно определить версию mdb файла.

Для определения версии можно использовать последовательность из 40 байт, начиная с 122 от начала файла. Если в БД Access 97 вписать эту последовательность от Access 2k, то получим интересный результат.

Программа ms Access, ADO и DAO нормально работают с этим файлом, а большинство взламывающих пароли программ попадаются на эту уловку.

Аналогичный результат может быть получен при пересадке байтовой последовательности из Access 97 в Access 2k

заголовок файла Access 2k

синим – фрагмент характерный для версии БД

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F00000000   00 01 00 00 53 74 61 6E  64 61 72 64 20 4A 65 7400000010   20 44 42 00 01 00 00 00  B5 6E 03 62 60 09 C2 5500000020   E9 A9 67 72 40 3F 00 9C  7E 9F 90 FF 85 9A 31 C500000030   79 BA ED 30 BC DF CC 9D  63 D9 E4 C3 9F 46  8A00000040   BC 4E 4F E9 7C 99 08 1F

00000070   98 FD DC 75 0C FF D8 FD  82 66 5F 95 F8 D0 89 24

00000080   85 67 C6 1F 27 44 D2 EE  CF 65 ED FF 07 C7 46 A1
00000090   78 16 0C ED E9 2D 62 D4  54 06 00 00 34 2E 30 00

Это ещё одно подтверждение, того, что стандартные способы защиты, даже от сторонних производителей уязвимы. Речь идёт о ключах HASP. С помощью утилиты HASP Envelope можно зашифровать файл (в данном случае БД) и разрешить к нему доступ только из защищённого приложения. Используется механизм “прозрачного” шифрования.

Со стартом операционной системы запускается некий процесс, который отслеживает все обращения к защищённому файлу БД. Если это обращение исходит от обычного приложения, например от ms Access – файл читается и выводится сообщение о “нераспознаваемом формате базы данных”.

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

и что скорость доступа к данным падает в два – три раза.

Взлом защиты.

Было найдено два способа получить БД своё полное распоряжение.

  • Во-первых, уязвим оказался код программы. Обращение к базе шло с использованием запросов. С начала в отладчике был найден запрос, вызываемый в ответ на нажатие кнопки в программе. Далее этот запрос был подменён текстом запроса на создание таблицы в другой БД. После нажатия кнопки запрос выбрал данные таблицы из защищённой БД и сохранил их в другом файле.
  • Во-вторых, была написана программка, которая используя хук внедрила свой код в адресное пространство защищённого HASP'ом процесса и от его имени просто скопирована файл базы данных.

Этот способ не плох. Во всяком случае появляется реальная надежда что то спасти. Однако есть ряд ограничений. Перед отображением данных их необходимо дешифровать. Нет возможности поиска по части строки в зашифрованном поле.

Алгоритм шифрования и ключ содержатся в программе, а значит, есть потенциальная уязвимость. В данном случае надёжность зависит от устойчивости к взлому программы, работающей с БД. Можно сочетать приятное с полезным: не шифровать, а сжимать содержимое memo полей.

Разбираться с алгоритмом сжатия в коде программы занятие скучное.

Заключение

Перед тем как ставить вопрос о способе защиты БД стоит задуматься о её необходимости. Не стоит полагаться на стандартные методы, но это не повод для отказа от использования Access. Специалист взломает что угодно, но можно сделать, чтобы это было не так просто.

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

Источник: //msvb.narod.ru/doc_access.htm

Файлы с расширением MDB: чем открыть?

Открываем базы данных MDB

При использовании современных компьютерных систем юзеры зачастую сталкиваются с неизвестными форматами файлов, открытие которых вызывает некоторые трудности. Одним из таковых можно назвать документы с расширением .mdb.

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

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

Чем открыть файл MDB: основные понятия формата

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

Именно ему и сопоставлен данный тип файлов, которые по умолчанию зарегистрированы в системе. Обратите внимание на тот момент, что при отключенном отображении расширений зарегистрированных файлов в том же «Проводнике», можно будет увидеть только иконку файла.

Но тут не все так просто. Проблема в том, что формат MDB может относиться не к табличным редакторам, а к медиа-данным, которые используются в программных продуктах Avid (и не только). Посему, вопрос того, чем открыть расширение .mdb, сводится к корректному выбору основного приложения, которое отвечает за использование данных такого типа.

Табличные редакторы

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

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

В принципе, обе программы очень сильно похожи между собой, но только с той лишь разницей, что Excel это все-таки математический или логический инструмент, а Access – средство работы с базами данных (даже SQL).

Кстати сказать, установка именно SQL-сервера зачастую позволяет решить проблему открытия файлов этого типа, минуя оригинальное приложение из офисного пакета.

Чем открыть MDB кроме Access?

Но в случае, когда под рукой «Офиса» нет, можно воспользоваться другими, не менее популярными и продвинутыми приложениями. Так, например, в качестве одного из возможных решений называется применение редакторов из пакета Open Office, которые по своим возможностям не только не уступают пакету MS Office, а в некоторых случаях его даже превосходят.

Если исходить именно из применения систем Microsoft, здесь подойдет Visual Studio. Преобразовать формат можно при помощи конвертеров вроде Freewind MDB Converter. Просмотреть содержимое файла можно при помощи обычного просмотрщика, скажем, MDB Viewer Plus. Такие приложения могут использоваться и в других операционных системах (об этом будет сказано отдельно).

Вопросы мультимедиа

К сожалению, вопрос того, чем открыть MDB-файл, имеет и обратную сторону медали. Тут основная проблема состоит в том, что некоторые мультимедийные программы вроде Avid Pro Tools, изначально разработанные для Mac-систем, но позже адаптированные для Windows (версии 9 и 10), тоже используют такой формат для хранения собственных данных в виде файлов проектов.

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

В «Проводнике», к сожалению, такой файл может быть помечен как объект Access, хотя на самом деле представляет собой совершенно другой тип данных.

Тут (если вы точно знаете, что это медиа-файл) придется использовать открытие через меню ПКМ с ручным выбором программы, даже если ее в списке потенциально пригодных приложений нет. Речь идет о том, чтобы выбрать программу Avid Pro Tools.

Драйверы

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

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

Конечно, настройки не изменятся, но для нормальной работы с проектом необходимо будет увеличить буфер до 2048 сэмплов, поскольку изначально сама программа Pro Tools при установленном значении 512 сэмплов, что соответствует задержке в 10 ms, может просто тормозить.

Обладателям программы FL Studio версии 10 и выше можно посоветовать использование специального программного обеспечения в виде драйвера Low Latency Driver, который, в отличие от оригинального ASIO4ALL, потребляет не так много системных ресурсов и является одним из самых предпочитаемых, если на компьютере или ноутбуке используется интегрированная звуковая карта с поддержкой High Definition Audio, встраиваемая непосредственно в материнскую плату.

Что можно использовать еще?

В принципе, это и есть основные моменты, связанные с открытием файлов такого типа. Иногда можно использовать программы типа Wolfram Research Mathematica для Windows-систем. Для «маков» подойдет MDB Viewer, для Linux – SAS Institute SAS или MDB Export.

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

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

Источник: //fb.ru/article/333159/faylyi-s-rasshireniem-mdb-chem-otkryit

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.