2012-01-12 80 views
0

我有一套hsqldb格式的數據庫文件(即.data,.properties.script文件),但管理它們的人以前退出並且沒有任何憑據。當我嘗試使用任何手段來訪問獨立的基於文件的數據庫(如雖然SqlTool或的DatabaseManager)連接到數據庫,通過默認的「sa」用戶和默認空密碼,我得到類似的東西:hsqldb繞過身份驗證:重置被遺忘的用戶和密碼

 
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) 
... 

有沒有一種方法可以輕鬆繞過整個hsqldb身份驗證和授予方案,只需重置「sa」用戶的完整權限?我已經挖掘了整個hsqldb文檔,並對Google進行了一些研究,但我找不到任何方法繞過它?

或者,如果沒有蠻力(即文件實際上是加密與給定的密碼)是完全不可能的? This question提到密碼存儲在.script文件中,但它看起來像使用SET SCRIPTFORMAT命令設置爲COMPRESSEDBINARYBINARY格式(我無法分辨出哪一個是我的裸眼),儘管我看到原始的實時字符串數據在.data文件中。可以解密BINARY格式嗎?

回答

1

如果在.data文件中看到明文字符串,則數據庫不會被加密。

由於HSQLDB是開源的,因此您可以在打開數據庫時編輯源以將控制檯的用戶名和密碼輸出到控制檯。爲此找到名爲User的類。這不能用加密數據庫來完成,加密數據庫在沒有加密密鑰的情況下根本不打開。

+0

謝謝!我假設沒有「官方」方式來繞過認證方案,但是在第一次連接嘗試中修補源以揭示所有認證數據是微不足道的。如果其他人需要它,只需在'UserManager#createUser(name,password)'中添加'name'和'password'的轉儲。 – GreyCat 2012-01-13 03:38:49