У меня есть база данных firebird более 8 ГБ, и я хочу перенести все данные из нее. Но я забыл логин и пароль. Есть ли какой-либо инструмент, с помощью которого я могу взломать эту базу данных и вернуть свои данные?
Забыли имя пользователя и пароль базы данных *fdb (firebird). Могу ли я взломать эту базу данных?
Ответы (1)
В большинстве установок Firebird имя пользователя и пароль хранятся в центральной базе данных безопасности (security3.fdb в случае Firebird 3). Если вы больше не знаете имя пользователя и пароль пользователя, у вас есть следующие варианты.
Имейте в виду, что этот ответ использует Firebird 3 в качестве основы, но большинство параметров также применимы к Firebird 2.5 и более ранним версиям. Вместо security3.fdb
используйте security2.fdb
. Шаги create user
и alter user
работают только в Firebird 2.5 и выше.
- Используйте учетную запись sysdba (или другого пользователя с ролью
RDB$ADMIN
в базе данных безопасности) для сброса пароля пользователя через любую другую базу данных - Используйте
gsec
как SYSDBA во встроенном режиме для сброса пароля - Замените базу данных безопасности копией с известным паролем для пользователя
Если ваша база данных использует себя в качестве базы данных безопасности, вам сначала придется удалить этот параметр из 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>';
Затем вы можете использовать эту базу данных для предыдущих шагов.
fdb
является сложной задачей; он может иметь специфичную для платформы компоновку. Было бы лучше иметь резервную копию (gbak) из исходного местоположения и восстановить эту резервную копию в новую базу данных. Но похоже, что вы ищете больше поддержки, чем подходит для StackOverflow. Подпишитесь на список рассылки поддержки firebird и задавайте там свои вопросы. - person Mark Rotteveel   schedule 26.09.2018It would be better to have a (gbak) backup from the original location
- и gbak запросит имя пользователя/пароль. Курица и яйцо. Или Pkunzip.zip, если хотите. - person Arioch 'The   schedule 26.09.2018I 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