database - 忘记了* fdb(firebird)数据库的用户名和密码。无论如何,我可以破解这个数据库吗?

标签 database security firebird cracking firebird-3.0

我有超过8gb的firebird数据库,我想从中迁移所有数据。但我忘了用户名和密码。有没有什么工具可以让我破解这个数据库,把我的数据拿回来?

最佳答案

在大多数firebird设置中,用户名和密码保存在中央安全数据库中(对于firebird 3,security3.fdb)。如果您不再知道用户的用户名和密码,您可以使用以下选项。
请注意,这个答案使用firebird 3作为基础,但大多数选项也适用于firebird 2.5和更早版本。使用security3.fdb,而不是security2.fdbcreate useralter user步骤仅适用于Firebird 2.5或更高版本。
使用sysdba帐户(或安全数据库中具有RDB$ADMIN角色的其他用户)通过任何其他数据库重置用户的密码
在嵌入式模式下使用gsec作为sysdba重置密码
用用户已知密码的副本替换安全数据库
如果数据库将自身用作其安全数据库,则首先必须通过注释掉该数据库的databases.conf设置,从SecurityDatabase中删除该设置。
对于firebird 3,此答案假定为srp身份验证机制创建了一个用户,下面的步骤假定firebird安装中的firebird.conf具有设置AuthServer = Srp(或至少该设置AuthServer包含Srp)和设置UserManager = Srp(或至少SrpUserManager的第一个条目)。
选项1:重置密码
在Firebird 2.5及更高版本上工作
使用sysdba连接到数据库(或安全数据库上具有管理员角色的另一个用户),并使用

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

不过,这可能不是你的选择。
选项1a:使用嵌入式连接重置(无密码)
在Linux上运行Firebird2.5或更高版本,在Windows上运行需要Firebird3.0或更高版本。
停止firebird服务器,并使用isql以嵌入模式(不需要密码)连接到数据库:
isql -user sysdba <database>

使用默认的firebird 3安装,您可以使用employeefor<database>,它将使用employee示例数据库。
如上所述更改密码。或者,尝试用isql命令行中的实际用户名替换sysdba
再次启动firebird服务器。
选项2:使用gsec更改密码
适用于所有版本的Linux,在Windows上仅适用于Firebird3.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(例如从Firebird 3 download page下载Zipkit),或使用已知密码的security3.fdb,并将当前security3.fdb替换为此默认版本。别启动火鸟。
对于早期的firebird版本,请在download page上查找您的版本。
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服务器,您应该能够连接到此用户及其密码。
这些步骤中的大多数假设您已经有一个数据库要连接,如果您还没有,那么您需要首先在上创建一个数据库。
以用户sysdba的身份启动isql:
isql -u sysdba

创建一个数据库
create database '<path-of-database>';

然后可以在前面的步骤中使用该数据库。

关于database - 忘记了* fdb(firebird)数据库的用户名和密码。无论如何,我可以破解这个数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52512325/

相关文章:

global - Firebird 全局临时表(GTT),触摸其他表?

mysql - 无法将数据从 Access 表单移动到报告

c# - 一个易于开发人员使用和部署的数据库?

java - 如何在数据库中存储加密的密码?

c# - 必须声明标量值?

php - 如何防止有人向我的注册页面发送表格?验证码还有意义吗?

c# - 使用 ADO.Net 提供程序将 Firebird 2.5 迁移到 4.0

Java 解密 - 使用填充密码解密时输入长度必须是 8 的倍数

java - 如何在war中证明class文件的安全性而不影响功能?

delphi - 服务无法访问文件夹