2014-01-13 90 views
2

我對Windows上的sybase數據庫擁有DBA權限。Sybase數據庫密碼「恢復」

我有另一個用戶,我不知道密碼。

我經常使用一個應用程序確實知道密碼,它使用密碼自動登錄到應用程序。但是,我找不到在應用程序或其dll/files/registry /等任何地方找到該密碼的方法。

我顯然不想更改用戶的密碼,因爲應用程序中的密碼無法更新(我知道)。

我希望能夠以該用戶身份登錄到數據庫。

是否有數據庫服務器的任何日誌記錄設置將以明文形式記錄密碼?或者我可以使用任何其他方法來獲取密碼(也許通過login_procedure)? 我也可以只獲取密碼(+鹽)的散列。

+0

這與軟件開發有關,即與代碼有關的問題是什麼? 「 –

+1

」是否有數據庫服務器的任何日誌記錄設置將以明文形式記錄密碼? - 如果有,我不想成爲該服務器上的用戶。以明文存儲密碼通常是一個壞主意。 (我不會說「總是」,因爲大多數規則都有例外......但是,幾乎總是如此)。 –

+0

@RobertHarvey,好問題,我一直在嘗試使用其他SQL查詢和過程來查找數據庫以及通過Visual Studio和Process Monitor進行調試。另外,一旦找到,我將在我自己的應用程序中使用此密碼來訪問數據庫。所以,儘管我一直試圖用自己的代碼來解決我的問題,但我確實瞭解如果您需要以Off Topic的形式關閉此問題。 –

回答

3

沒有SAP Sybase支持的方式以明文形式獲取密碼。您可以通過查詢master..syslogins.passwords列來查看散列密碼。

可能的解決方法是創建一個新用戶,並將它們別名給數據庫內的用戶。

sp_addalias是您將用於執行此類操作的命令。

您可以查看哈希密碼

+0

我確定有*方法*;我很難相信sybase數據庫和服務器是難以逾越的。我可能需要很長時間,並想出如何設置一個假的sybase服務器,它應該允許我獲得連接字符串......但我不知道從哪裏開始才能做到這一點。 –

+0

我也可以用密碼哈希,順便說一句。 –

+0

'從syslogins中選擇密碼將爲所有用戶返回NULL。 –

2

你不能因爲它不是任何地方記錄下來,我們不會保存它的明文密碼。存儲在ISYSUSER系統表中的是密碼的SHA-256 散列號,因此無法從中獲取密碼。 (它不是密碼的散列 - 它包含一個隨機鹽)。

但是,如果您擁有DBA權限,則無論如何您都可以在數據庫中執行任何操作。如果需要作爲特定用戶連接,則可以以具有DBA權限的用戶身份進行連接,然後使用SETUSER語句。

聲明:我在SQL Anywhere工程中爲SAP工作。

+0

對,我認爲它有一個鹽,儘管我不是確定它存儲在散列中的時間或位置,我的猜測是第一個字節(0x01)不重要,接下來的72個包含散列和鹽,其中64個代表散列,留下8個ch字符(4字節十六進制)鹽。我嘗試了超過600000個哈希方法來嘗試重現無濟於事,哈哈。 –

+0

一些背景信息:我有大約400個文件,都有一個名爲'auto_user'的用戶都具有相同(未知)密碼(至少我認爲它們每個都是相同的)。此用戶和密碼由第三方應用程序創建。雖然我可以在所有這些文件上獲得DBA訪問權限,但這是一個艱苦的過程,因爲DBA的用戶名和密碼各不相同 - 而且我不想維護這些(敏感)信息。 –

+0

只要無法從哈希中獲取密碼,我實際上可以使用高性能的機器或10幾周來試圖強制它。所以如果我能得到算法,那實際上會有很大的幫助(顯然我知道你不會公佈它,我只是想解釋我的意圖)。 –

0

另一種選擇可能是反編譯應用程序並查找密碼。我不知道誰在正確的思維將硬編碼密碼到程序代碼中,但它聽起來像這裏發生了什麼?或者,如果它是內部開發的應用程序,您是否有權訪問源代碼?

如果發生了什麼,你必須重新編譯應用程序,使用鑰匙圈(蘋果機和Linux)或DPAPI(Windows)中安全地(儘可能)存儲密碼的加密實例的能力應用程序代碼之外。你可以改變它,一些隨機的人設法入侵併訪問源代碼或二進制文件將無法像我建議你嘗試的那樣檢查程序。

我也意識到這是一箇舊的帖子,你已經解決了這個問題,或者到現在爲止。;-)

+0

該應用程序是QuickBooks Desktop,它以某種方式無需用戶密碼即可訪問基礎SQL Anywhere服務器。我們尚未解決問題,只是解決了它。 –

+1

Oohhh,QuickBooks。節哀順變。 ;-) – Craig

+0

我不知道他們是否只是從Windows Everyone組之類的東西進行登錄映射到DBA並使用集成身份驗證?大聲說出來。 – Craig