我有一個Zip文件,其中包含一個不會提取的大(重要)文件。我嘗試過的所有Zip實用程序,包括聲稱恢復/修復損壞的Zip歸檔文件的那些實用程序都無法提取包含損壞的zlib壓縮數據的文件。他們獲取存檔中的所有文件,除了已損壞的條目被跳過。是否有可能恢復損壞的部分之外的損壞的Zlib數據?
我在C#中編寫了一個小實用程序,用於解析zip歸檔文件,識別每個條目並解析出字段,解密數據部分,然後使用DeflateStream(從zlib的.Net實現) 。一切工作正常,直到我到達損壞的條目。已損壞的條目成功完全解密(在CTR模式下使用AES),但在投擲「錯誤狀態(超額訂閱動態位長度樹)」之前,DeflateStream閱讀器僅能夠解密大約40MB的數據。
是否有可能以某種方式「尋找」過損壞的部分並繼續解壓數據?我想盡可能地恢復文件,即使有一些漏洞。 DeflateStream沒有實現一個Seek方法,如果我試圖創建一個新的DeflateStream並且底層的FileStream定位到最後一個讀取位置,它會拋出相同的「Bad State」異常。