Забыли имя пользователя и пароль базы данных *fdb (firebird). Могу ли я взломать эту базу данных?

У меня есть база данных firebird более 8 ГБ, и я хочу перенести все данные из нее. Но я забыл логин и пароль. Есть ли какой-либо инструмент, с помощью которого я могу взломать эту базу данных и вернуть свои данные?


person Rana Hadaiq Ahmad    schedule 26.09.2018    source источник
comment
firebirdfaq.org/faq55   -  person kelalaka    schedule 26.09.2018
comment
У меня нет пароля к моему файлу .FDB. Я не могу экспортировать его в какой-либо инструмент, а ссылка, которую вы мне дали, связана с сервером.   -  person Rana Hadaiq Ahmad    schedule 26.09.2018
comment
Использует ли база данных центральную базу данных безопасности (по умолчанию) или она содержит собственную базу данных безопасности?   -  person Mark Rotteveel    schedule 26.09.2018
comment
имена пользователей и пароли хранятся в файле базы данных безопасности, а не в файле базы данных данных. Конечно, в FB 3.0 есть хитрость, заключающаяся в том, что файл базы данных данных может сам по себе быть файлом базы данных безопасности. Однако это редкий случай, и вам не нужно идти по этому пути. Используйте абсолютного пользователя SYSDBA Firebird и делайте с этой базой данных что хотите.   -  person Arioch 'The    schedule 26.09.2018
comment
... если только то, что он на самом деле имел в виду под паролем, не было каким-то тайным плагином шифрования.   -  person Arioch 'The    schedule 26.09.2018
comment
@Arioch'У меня есть только один файл с расширением .FDB, и я хочу экспортировать данные на свой сервер sql. Я просто новичок в Firebird, и я не могу понять, как я могу использовать сервер. Если бы вы могли помочь мне настроить это, я был бы вам признателен   -  person Rana Hadaiq Ahmad    schedule 26.09.2018
comment
@RanaHadaiqAhmad В этом случае у вас даже нет этой проблемы: установите Firebird, и вы сможете открыть базу данных с учетной записью sysdba по умолчанию. Обратите внимание, что перенос базы данных Firebird путем копирования файла fdb является сложной задачей; он может иметь специфичную для платформы компоновку. Было бы лучше иметь резервную копию (gbak) из исходного местоположения и восстановить эту резервную копию в новую базу данных. Но похоже, что вы ищете больше поддержки, чем подходит для StackOverflow. Подпишитесь на список рассылки поддержки firebird и задавайте там свои вопросы.   -  person Mark Rotteveel    schedule 26.09.2018
comment
@MarkRotteveel It would be better to have a (gbak) backup from the original location - и gbak запросит имя пользователя/пароль. Курица и яйцо. Или Pkunzip.zip, если хотите.   -  person Arioch 'The    schedule 26.09.2018
comment
@MarkRotteveel, если это так, то администратор FB может просто запустить fbExport или подобный инструмент и передать текстовые файлы (CSV, XML, SQL и т. д.) в топикстартер.   -  person Arioch 'The    schedule 26.09.2018
comment
Кроме того, I have just one file having extension .FDB - откуда мы знаем, что это 1) база данных FB3, а не FB2-? 2) База данных Firebird, а не какой-то другой формат с измененным расширением имени файла? Houston, I smell a problem! Есть ли в IBExpert Personal edition функция dbExtractor, которая может просматривать базу данных без сервера? Просто проверить ODS, отсутствие шифрования и принципиальную возможность парсить данные. Если это окажется не Firebird-файл или зашифрованный FB3-файл - все напрасно.   -  person Arioch 'The    schedule 26.09.2018


Ответы (1)


В большинстве установок Firebird имя пользователя и пароль хранятся в центральной базе данных безопасности (security3.fdb в случае Firebird 3). Если вы больше не знаете имя пользователя и пароль пользователя, у вас есть следующие варианты.

Имейте в виду, что этот ответ использует Firebird 3 в качестве основы, но большинство параметров также применимы к Firebird 2.5 и более ранним версиям. Вместо security3.fdb используйте security2.fdb. Шаги create user и alter user работают только в Firebird 2.5 и выше.

  1. Используйте учетную запись sysdba (или другого пользователя с ролью RDB$ADMIN в базе данных безопасности) для сброса пароля пользователя через любую другую базу данных
  2. Используйте gsec как SYSDBA во встроенном режиме для сброса пароля
  3. Замените базу данных безопасности копией с известным паролем для пользователя

Если ваша база данных использует себя в качестве базы данных безопасности, вам сначала придется удалить этот параметр из databases.conf, закомментировав параметр SecurityDatabase для этой базы данных.

Для Firebird 3 этот ответ предполагает создание пользователя для механизма аутентификации Srp, а приведенные ниже шаги предполагают, что firebird.conf в установке Firebird имеет параметр AuthServer = Srp (или, по крайней мере, этот параметр AuthServer содержит Srp) и параметр UserManager = Srp (или, по крайней мере, что Srp является первой записью для UserManager).

Вариант 1: сбросить пароль

Работает на Firebird 2.5 и выше

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

ALTER USER <username> SET PASSWORD '<new password>';

Хотя, наверное, в вашем случае это не вариант.

Вариант 1а: сброс со встроенным соединением (без пароля)

Работает в Linux для Firebird 2.5 или выше, в Windows требуется Firebird 3.0 или выше.

Остановите сервер Firebird и используйте ISQL для подключения к базе данных во встроенном режиме (который не требует пароля):

isql -user sysdba <database>

При установке Firebird 3 по умолчанию вы можете использовать employee вместо <database>, что будет использовать пример базы данных сотрудников.

Измените пароль, как описано выше. В качестве альтернативы попробуйте заменить sysdba фактическим именем пользователя в командной строке isql.

Снова запустите сервер Firebird.

Вариант 2: используйте gsec для смены пароля

Работает в Linux для всех версий, в Windows работает только для Firebird 3.0 и выше.

Имейте в виду, что gsec устарел, начиная с Firebird 3, и может быть удален из будущих версий Firebird.

Остановите сервер Firebird, откройте командную строку и в папке установки Firebird выполните:

gsec -user sysdba

и в приглашении gsec

modify <username> -pw <new password>

или если пользователь еще не существует:

add <username> -pw <new password>

Снова запустите сервер Firebird.

Вариант 3: заменить базу данных безопасности

Большинство из этих шагов также применимы, если вы используете новую установку Firebird; просто пропустите замену базы данных безопасности.

Остановите сервер Firebird и сделайте резервную копию текущего файла security3.fdb.

Получите файл security3.fdb по умолчанию для вашей платформы (например, загрузите zipkit с загрузки Firebird 3). страницу) или используйте файл security3.fdb с известным паролем и замените текущий файл security3.fdb этой версией по умолчанию. Пока не запускайте Firebird.

Для более ранних версий Firebird найдите свою версию на странице загрузки.

Пароль по умолчанию для sysdba обычно "masterkey", но в Firebird 3 файл security3.fdb по умолчанию содержит только этого пользователя для устаревшего механизма аутентификации, который отключен в установке Firebird 3 по умолчанию.

Чтобы добавить пользователя sysdba, используйте встроенное подключение к любой базе данных и создайте учетную запись sysdba. В командной строке из папки установки Firebird выполните:

isql -u sysdba <database>

В ISQL выполните:

create user sysdba password '<sysdba password>';
commit;

Чтобы добавить другого пользователя, подключитесь с помощью SYSDBA — аналогично предыдущему шагу 2 — к любой базе данных и выполните

create user <username> password '<new password>';
commit;

И выйти из isql (с quit;)

Затем снова запустите сервер Firebird, и вы сможете подключиться с этим пользователем и его паролем.


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

Запустите isql как пользователь sysdba:

isql -u sysdba

И создать базу данных

create database '<path-of-database>';

Затем вы можете использовать эту базу данных для предыдущих шагов.

person Mark Rotteveel    schedule 26.09.2018
comment
Одна из причин, по которой мы не переходим на FB3... Мы хотим сохранить dba-admin необязательное состояние старой доброй Interbase, некоторым нашим клиентам это нужно - person Arioch 'The; 26.09.2018
comment
@Arioch'The Вы были правы, я обновил версии, для которых работает ответ. - person Mark Rotteveel; 21.12.2018