2011-08-09 55 views
1

我正在幫助一個項目,其中iSeries上的舊軟件系統正在應用一個全新的.NET UI。它順利...除了...iSeries(AS/400)數據庫文件:密碼加密

爲了讓用戶登錄並保持與現有軟件的兼容性安裝,我們需要弄清楚什麼加密/散列法以前廠商用沒有獲得其源碼。

我有一個ID和密碼列的文件。密碼列似乎只包含每個記錄16個字符,全部爲二進制。以前的供應商系統的

部分是寫在本地的綠色屏幕上的400和它的一部分是寫在微軟ASP.Net。

什麼類型的加密或散列要:

  1. 通過AS/400或iSeries綠屏應用程序使用,並且
  2. 由Microsoft .NET應用程序使用,並且
  3. 輸出一致的16個二進制字節,而不管輸入長度的

指針讚賞。謝謝!

回答

2

i有許多內置和第三方加密方案。最好的辦法是找到供應商在其應用程序中使用的API或直接詢問它們。一個設計良好的應用程序可以在一個地方登錄代碼。

注意:我已經處理了足夠的供應商,知道我所說的就像要求您將艾菲爾鐵塔向左移動2英寸。

2

第一停靠港是舊系統的系統手冊。之後,聯繫供應商,並假設您支付了支持(您確實支付了支持,是不是),讓他們的技術支持人員回答您的問題。

如果這不能讓你在任何地方,你必須開始挖掘。 16個字符是128位,所以你可能有128位散列的東西。最有可能的MD5,特別是如果原來的代碼約1991追溯至1996年。

接下來,你需要決定是否在散列之前加入鹽的密碼。在舊系統上使用不同的用戶名和相同的密碼創建兩個新用戶帳戶。說「用戶1 /密碼」和「用戶2 /密碼」。現在查看密碼文件並找到兩個新條目。如果這兩個哈希值相同,則不使用鹽值,並且您可能只有一個簡單的密碼哈希值。如果沒有,那麼嘗試的用戶名和密碼的簡單組合的MD5哈希值:

user1password
passworduser1
USER1:密碼
密碼:user1的

如果那麼你有這些作品之一解決了它。如果沒有,那麼你將花費很長時間建立彩虹表和各種其他密碼分析的東西。

如果得出結論,只需將網絡嗅探器放到您的網絡中並擊中舊系統,這樣您就可以在散列之前讀取用戶的密碼。爲了更多的確定性,請在記錄密碼之前檢查「您登錄正確」的消息是否以另一種方式返回。他們可能只是在錯誤的時間輸入錯誤。