-1

我有一个访问本地 firebird 数据库的程序。它对这个数据库有写权限,我们需要能够写这个数据库,但不知道用户名/密码。

显然,PC 中的某处是能够连接到该数据库的连接字符串/用户名/密码。我可以用什么方法找到这个?

我试过进程监视器来查看它是否访问任何注册表项但看不到任何注册表项。我已经检查了配置文件的安装目录。我已经反编译了一些 DAL DLL,但在任何地方都看不到任何硬编码!

供应商已经不在了,所以我们不能去找他们。

任何建议表示赞赏!

4

2 回答 2

2

如果使用“本地”表示嵌入,那么您实际上不需要知道密码 - 嵌入式版本不检查密码。引用“README_embedded.txt”文件的“2.3.身份验证和安全”一章:

嵌入式服务器中不使用安全数据库(即 security2.fdb),因此不需要。任何用户都可以附加到任何数据库。由于服务器和客户端都运行在同一地址空间中,因此安全性只是双方之间的协议,很容易受到损害。

因此,您实际上只需要用户名,并且您可以使用SYSDBA- Firebird 的超级用户。请注意,即使使用嵌入的用户名,仍会检查用户名以分配用户 SQL 权限。

于 2013-03-19T06:24:50.000 回答
0

除了ain关于使用嵌入式的回答之外,Firebird 中的身份验证由服务器及其关联的安全数据库处理。这意味着如果您将 Firebird 数据库复制(或更好:备份和恢复)到您知道 SYSDBA 密码的另一台服务器,那么您可以简单地访问该数据库。

但是,如果您希望从不同的进程对嵌入在用户应用程序中的 Firebird 服务器使用的数据库进行连续写入访问:您不能。嵌入式服务器(至少在 Windows 上)不允许外部连接。

于 2013-03-19T19:22:19.917 回答