Authentication hsqldb绕过身份验证:重置忘记的用户和密码
我有一组hsqldb格式的数据库文件(即Authentication hsqldb绕过身份验证:重置忘记的用户和密码,authentication,authorization,hsqldb,forgot-password,Authentication,Authorization,Hsqldb,Forgot Password,我有一组hsqldb格式的数据库文件(即.data、.properties和.script文件),但之前管理这些文件的人退出了,没有留下任何凭据。当我尝试使用任何方式连接到数据库以访问独立的基于文件的数据库(如SqlTool或DatabaseManager),并传递默认的“sa”用户和默认的空密码时,我得到如下结果: java.sql.SQLException: User not found: SA at org.hsqldb.jdbc.Util.sqlException(Unk
.data
、.properties
和.script
文件),但之前管理这些文件的人退出了,没有留下任何凭据。当我尝试使用任何方式连接到数据库以访问独立的基于文件的数据库(如SqlTool或DatabaseManager),并传递默认的“sa”用户和默认的空密码时,我得到如下结果:
java.sql.SQLException: User not found: SA
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.(Unknown Source)
at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
at org.hsqldb.jdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
...
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文档,并在谷歌上做了一些研究,但我找不到任何方法绕过它
或者,如果没有暴力强制,这是完全不可能的(即,文件实际上是用给定的密码加密的)?提到密码存储在
.script
文件中,但看起来我的密码是使用set SCRIPTFORMAT
命令设置为COMPRESSED
或BINARY
格式的(我无法用肉眼分辨是哪一个),尽管我在data
文件中看到了原始的实时字符串数据。是否可以解密二进制格式?如果在.data文件中看到明文字符串,则数据库未加密
由于HSQLDB是开源的,您可以编辑源代码,以便在打开数据库时将用户名和密码打印到控制台。为此,请查找名为
User
的类。加密数据库无法做到这一点,如果没有加密密钥,这些数据库根本无法打开 谢谢!我假设并没有“官方”方法可以绕过身份验证方案,但在第一次连接尝试时修补源代码以显示所有身份验证数据是很简单的。如果其他人需要它,只需在UserManager\createUser(name,password)
中添加name
和password
转储即可。