【问题标题】:hsqldb bypass authentication: reset forgotten user and passwordhsqldb绕过身份验证:重置忘记的用户和密码
【发布时间】:2012-02-08 08:52:20
【问题描述】:

我有一组 hsqldb 格式的数据库文件(即.data.properties.script 文件),但管理它们的人之前退出并且没有留下任何凭据。当我尝试使用任何方式连接到数据库以访问基于文件的独立数据库(例如 SqlTool 或 DatabaseManager),传递默认的“sa”用户和默认的空密码时,我会得到类似的信息:

java.sql.SQLException:找不到用户:SA 在 org.hsqldb.jdbc.Util.sqlException(未知来源) 在 org.hsqldb.jdbc.jdbcConnection.(未知来源) 在 org.hsqldb.jdbcDriver.getConnection(未知来源) 在 org.hsqldb.jdbcDriver.connect(未知来源) 在 java.sql.DriverManager.getConnection(DriverManager.java:582) 在 java.sql.DriverManager.getConnection(DriverManager.java:185) ...

有没有办法轻松绕过整个 hsqldb 身份验证和授权方案,只需重置“sa”用户的全部权限?我已经挖掘了整个 hsqldb 文档并通过 Google 进行了一些研究,但我找不到任何方法来绕过它?

或者如果没有暴力破解是完全不可能的(即文件实际上是用给定的密码加密)? This question 提到密码存储在.script 文件中,但看起来我使用@987654328 将密码设置为COMPRESSEDBINARY 格式(我无法用肉眼分辨出哪一个) @ 命令,尽管我在 .data 文件中看到了原始的实时字符串数据。是否可以解密 BINARY 格式?

【问题讨论】:

    标签: authentication authorization hsqldb forgot-password


    【解决方案1】:

    如果您在 .data 文件中看到明文字符串,则说明数据库未加密。

    由于 HSQLDB 是开源的,您可以编辑源代码以在打开数据库时将用户名和密码打印到控制台。为此,找到名为User 的类。加密数据库无法做到这一点,如果没有加密密钥,这些数据库根本无法打开。

    【讨论】:

    • 谢谢!我假设没有绕过身份验证方案的“官方”方法,但是修补源以在第一次连接尝试时显示所有身份验证数据是微不足道的。如果其他人需要它,只需在UserManager#createUser(name, password) 中添加namepassword 的转储。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2019-08-26
    • 2020-05-10
    • 2015-12-23
    • 2018-10-20
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多