
我在電腦上發現了一個舊的 .rar 文件,但我無法準確記住密碼。我大概知道它是什麼,所以我用 C# 寫了一個使用 7ziplib 的程式來暴力破解一堆排列。
幾千年後它找到了匹配。當我使用找到的密碼在 7zip 中開啟檔案時,它會開啟但不顯示任何檔案。當我嘗試在 Winrar 中開啟它時,它顯示存檔已損壞或密碼無效。
7ziplib 將未壓縮檔案的大小報告為 -1。
我對同一資料夾中的另一個 zip 運行了相同的暴力程序,該資料夾具有相似但不相同的密碼,並且表現出相同的行為。
同一資料夾中還有其他未受密碼保護的 rar 文件,可以正常開啟。
這有什麼演算法解釋嗎?我是否發現一個密碼可以通過密碼檢查的一個階段,但不能通過另一個階段?或存檔已損壞?
如果有幫助的話,該格式被報告為 Rar4,Google表示該格式使用 AES-128,但維基百科表示不會退出,因為它從版本 2.9 跳到版本 5。
答案1
據我所知,RAR 的所有校驗和值都使用 32 位元 CRC 值,包括檔案和壓縮檔案頭的校驗和值。因此,當暴力破解密碼時,即使解碼後的標頭資料(以及任何後續文件資料)是垃圾,您也有2^32 分之一(約40 億分之一)的標頭校驗和配對機會,因為密碼,因此解密金鑰其實是不正確的。我暴力破解 RAR 的經驗似乎證實了這一點。
這有什麼演算法解釋嗎?我是否發現一個密碼可以通過密碼檢查的一個階段,但不能通過另一個階段?
這就是發生的事情。