① 有關ZIP壓縮包的破解
根據官方文檔上的描述,ZIP文件的格式如下圖所示。
通常情況下,我們所用ZIP文件格式為下圖中所表示出來的三個部分(其餘部分的說明在附錄中給出):
接下來,我們將結合一個實際的ZIP壓縮包文件來具體分析其格式。
首先,構造該ZIP壓縮包,為了方便和後續的已知明文攻擊部分內容相銜接,這里先構造這樣一個內容為
的plain.txt文件,將其壓縮成plain.zip。
下面,分別從壓縮源文件數據區、壓縮源文件目錄區、壓縮源文件目錄結束標志展開。
[Local file header(文件頭)+File data(文件數據)+Data descriptor(數據描述符)]
文件頭主要用於表示此文件的開始,記錄了此文件壓縮的信息,具體欄位的含義如下表。(註:偏移量為十進制)
general purpose bit flag: (2 bytes)
compression method: (2 bytes)
CRC-32: (4 bytes)
使用WinHex打開我們之前構造的plain.zip壓縮包,對其Local file header(文件頭)部分進行分析,從偏移量為28(0x1C)處看起,讀出來擴展區長度為0,故文件名及其前面的部分為Local header(文件頭)。
由圖結合各欄位的偏移量和大小,各個欄位分析如下:
此部分緊跟在Local file header(文件頭),記錄了該文件壓縮、存儲的數據。
由圖結合偏移量,得到下表。
數據描述符僅在通用Local file header文件頭的通用比特標志位的第3比特為1的時候存在。在1.1.1中通用比特標志位的詳細說明中可知,如果此位為1,那麼Local file header文件頭中的CRC32校驗碼、壓縮大小和未壓縮大小的欄位將設置為0,這三個欄位正確的值放在此數據描述符中。
由於我們所選的plain.zip數據包中Local file header文件頭中的通用比特標志位第3比特為0,所有不含有此部分,CRC32校驗碼、壓縮大小、未壓縮的大小這三個欄位的實際值都位於Local file header文件頭中。
[ Centra directory (核心目錄) ]
Centra directory 核心目錄主要是記錄壓縮文件的目錄信息,每個壓縮源文件數據區的記錄對應此壓縮源文件目錄去的一條記錄。
由圖結合各欄位的偏移量及大小,核心目錄部分的各個欄位分析如下:
[End of Central directory recored (目錄結束標志)]
目錄結束標志用於標記壓縮的目錄數據的結束,每個壓縮文件對應在此數據區有一記錄。
由圖結合各欄位的偏移量及大小,目錄結束標志的各個欄位分析如下:
此時,有以下幾種方式:
假設不知道某個zip壓縮包的密碼,但是已經獲取或者根據破解得到其中的某一個文件的話,可以考慮採用已知明文攻擊。這是因為同個zip壓縮包中的所有文件使用同一加密秘鑰來進行加密的,所以可以根據已知文件進行同樣的壓縮以構造部分明文來尋找加密秘鑰,利用找到的秘鑰解密zip壓縮包中其他的文件。
舉例:已知下面這個壓縮文件(what's this.zip)中plain.txt的內容
② 壓縮包大小和文件頭標識信息不匹配
自己在嘗試修復壓縮文件的時候發現的一點小技巧,頭文件損壞,可謂是壓縮包的一個大敵,很多網上的方法修復軟體並沒有效果,本視頻的方法可以巧妙回復壓縮文件並成功解壓(前提是能打開壓縮文件,但解壓時提示頭文件損壞的那種,打不開的可以嘗試用winrar修復)電腦野生技術協會技術宅知識野生技能協會數碼軟體技術學習視頻教程教學視頻教程經驗分享bilibili新星計劃
③ 壓縮文件學習總結
RAR是有四個文件塊組成的,分別是分別是標記塊、歸檔頭部塊、文件塊、結束塊,這些塊之間沒有固定地先後順序,但要求第一個塊必須是標志塊並且其後緊跟一個歸檔頭部塊
RAR的標記塊和結束塊都是固定的7位元組序列,分別為0×52 61 72 21 1A 07 00和0xC4 3D 7B 00 40 07 00
每一塊後面都有兩個crc校驗,在crc之後的位元組用於判斷塊類型
HEAD_TYPE=0x72 標記塊
HEAD_TYPE=0x73 壓縮文件頭
HEAD_TYPE=0x74 文件頭
HEAD_TYPE=0x75 注釋頭
HEAD_TYPE=0x76 舊風格的用戶身份信息
HEAD_TYPE=0x77 子塊
HEAD_TYPE=0x78 恢復紀錄
HEAD_TYPE=0x79 用戶身份信息
HEAD_TYPE=0x7a subblock
比如上圖rar要獲取的文件除了flag.txt外還有secret.png,本來在A8 3C校驗位後被改成了7A,被鎖定後解壓文件無法看到secret.png,所以這里需要自己改塊標志將其改為文件塊
壓縮源文件數據區+壓縮源文件目錄區+壓縮源文件目錄結束標志
50 4B 03 04是ZIP頭文件標記
14 03是解壓文件需要的PK版本
00 00是全局方位標記(文件是否有加密可通過這兩位來判斷,單數為加密,偶數為無,例如:00 02 04表示加密,01 03 09表示無)
之後查看壓縮包里有多少文件可以查找50 4B有多少個就行了
不過壓縮源文件數據區跟壓縮源文件目錄區是不一樣的,文件標識依然是前四位,之後四位分別對應壓縮需要的PK版本跟解壓需要的PK版本之後的00 00對應數據區的全局方位標記(判斷加解密與上面一樣)
在CTF題中會存在偽加密的zip文件,原理就是更改了其中的全局方位標記
ps:Kali中用binwalk -e可以直接解壓,此工具分離文件的原理就是識別文件頭後進行文件分離
④ rar壓縮文件頭文件損壞,能修復嗎
應急解決 x0dx0a1.利用恢復記錄 x0dx0a想要修復CRC是有條件的,必須是此RAR壓縮包中有恢復記錄,而此恢復記錄是RAR壓縮包被壓縮時的可選項。 x0dx0ax0dx0a而WinRAR壓縮時默認是不放置恢復記錄的,如果提供的是這樣的RAR壓縮包,那麼用戶自己想要修復CRC錯誤是不可能的。 x0dx0ax0dx0a2.釜底抽薪 x0dx0a如果RAR壓縮包中的文件是那種即使文件有缺失仍能正常或較為正常地使用的(其實大多數的文件對部分數據損壞都不是非常敏感的),那便可以使出我們的終極殺招:釜底抽薪法! x0dx0ax0dx0a其原理就是讓RAR壓縮包內損壞的文件解壓縮出來,不理會WinRAR的警告,能解壓多少就解壓多少。解壓縮軟體還是用WinRAR,不過要做小小的設置。 x0dx0ax0dx0a在右鍵點擊解壓縮文件後跳出的窗口裡,把「保留被損壞的文件」復選框選中,點擊確定開始解壓縮。不要理會解壓縮出錯的信息,解壓縮結束之後你會發現損壞的文件被解壓出來了。經過這樣解壓出來的損壞文件能正常使用的幾率還是非常高的。x0dx0a做好保險工作x0dx0a1.做好恢復記錄 x0dx0a原始RAR壓縮包在壓縮時,如果選擇放置恢復記錄,這樣用戶下載後即使CRC出錯也有自己修復的機會! x0dx0ax0dx0a2.採取分卷壓縮 x0dx0a採取分卷壓縮的方法便可較大地減少因為出現不可恢復的錯誤帶來的損失。 x0dx0ax0dx0a3.老文件也加恢復記錄 x0dx0a有人也許會問,新壓縮的RAR壓縮包可以加入恢復記錄,那麼已經壓縮過的RAR包有沒有辦法也加上恢復記錄呢?給已經壓縮好的RAR壓縮包加上恢復紀錄是有辦法的。 x0dx0ax0dx0a只需要打開壓縮包,在「命令」菜單中選擇「保護檔案文件」即可。 x0dx0ax0dx0a小常識: x0dx0a其實RAR壓縮包出錯的解決方法主要是以預防為主!如果沒有預防,等到真正出了問題,技術上也是沒辦法完美解決的!像循環冗餘校驗碼(CRC)出錯這種情況,如果RAR壓縮包不包含恢復記錄的話,用戶自己想要修復CRC是不可能的!本文的主要目的是想告訴大家一些出錯的原因以及討論一些從根本上預防出錯和把損失減少到最小的辦法而已!
⑤ rar文件是什麼意思
RAR是一種文件壓縮與歸檔的私有文件格式,用於數據壓縮與歸檔打包。簡單的說就是將原有的文件數據經過壓縮處理之後保存為RAR文件格式後綴名,通常Windows用戶比較常見的壓縮軟體WinRAR。RAR文件格式是專有的壓縮文件格式,其具體的設計細節並沒有完全公開。
RAR是一種專利文件格式,用於數據壓縮與歸檔打包,開發者為尤金·羅謝爾(俄語:Евгений Лазаревич Рошал,拉丁轉寫:Yevgeny Lazarevich Roshal),RAR的全名是「Roshal ARchive」,即「羅謝爾的歸檔」之意。首個公開版本RAR 1.3發布於1993年。
RAR 是一種專有的文件格式,用於文件的壓縮、歸檔與打包。RAR 的全名是:Roshal Archive(即「羅謝爾的歸檔」之意),其開發者是尤金·羅謝爾(Eugene Roshal)。首個公開版本 RAR 1.3 發布於1993年。Roshal 最初編寫了 RAR 的 Dos 版本的程序用以編碼和解碼文件,後來該程序被移植到其他的平台,比較著名的是 Windows 平台上移植版的 Win RAR。Eugene Roshal後來公開了解碼程序的源代碼,但是編碼程序仍然是私有的。RAR 因為其獨特的壓縮演算法,基本可以做到無損壓縮,而且還能夠滿足較高的壓縮比,同時保證一定的壓縮速度。但是RAR壓縮演算法也存在一定的缺陷,由於RAR文件頭需要佔用一部分的空間,二檔壓縮的原始數據量較小,而且壓縮的空間較小的情況下,可能會出現壓縮後的文件反而比原始文件更大。RAR 文件有較多的冗餘記錄,主要是考慮到在壓縮過程中,壓縮數據受損,為了保證無損壓縮,會有較多的恢復記錄,這些恢復記錄也佔用了一定的空間。但是分卷壓縮是 RAR 非常突出的一個優點,將源文件分割為多個小文件,從而有利於解壓出源文件。如果將所有的數據壓縮到同一個數據區,就可以大大加大壓縮比,但是這種壓縮方式在解壓其中一個單獨的文件時就必須解壓同一數據區中位於它之前的所有的文件,不利於文件的單獨解壓。RAR 擁有成熟的加密演算法,2.0 版本以後使用 AES 演算法來加密,AES 演算法的破解難度比較大,在沒有密碼的情況下只能採取暴力破解的辦法,對於數據的安全性有一定的保證。 [1]
文件格式編輯 播報
文件格式
文件格式
RAR 文件格式是專有的壓縮文件格式,其具體的設計細節並沒有完全公開。但就其已公開的資料來看,RAR 文件是由一系列可變長度的數據塊組成。另外,數據塊之間並沒有一定的順序,但開發者約定,每個 RAR 文件都要以標記塊和壓縮文件塊開始,並以結束標記塊結束。每一塊的開始是由通用欄位開始,且每一個不同的塊的通用欄位結構都是一樣的。這些數據塊的類型並不全部相同,所攜帶的信息以及在文件中的作用也不同。但所有的數據塊都有一個相同結構的頭部,這個頭部稱為基本塊頭部。通過在基本塊頭部後面添加不同的欄位就形成了不同類型的數據塊。計算文件的大小時,有兩種不同的情況:當塊標記「塊標記」首位未置 1, 「塊大小」欄位的值就是總塊的大小;當塊標記「塊標記」首位置 1,並且可選結構存在,為「塊大小+ 增加塊大小」才是真正的塊大小。標記塊中欄位類型固定,長度固定,各個欄位的值也是固定的。壓縮文件頭,是標識整個壓縮文件相關屬性的數據塊。其結構是在基本塊頭部後面添加兩個保留欄位。文件頭是用於標識 RAR 中被壓縮文件相關屬性的欄位集。RAR 中有多少被壓縮的文件,就有多少文件塊
RAR通常情況比ZIP壓縮比高,但壓縮/解壓縮速度較慢。
分卷壓縮:壓縮後分割為多個文件。
固實壓縮:把要壓縮的視為同一個文件以加大壓縮比,代價是取用包中任何文件需解壓整個壓縮包。
恢復記錄:加入冗餘數據用於修復,在壓縮包本身損壞但恢復記錄夠多時可對損壞壓縮包進行恢復。
加密:RAR 2.0使用AES-128-cbc,(rar5.0以後為AES-256CBC)。之前RAR的加密演算法為私有。目前均未被直接攻破(至少沒有公開),沒有密碼時只有暴力破解。 [1]
缺點:無法有效對付嵌套壓縮包,對於密碼各異的壓縮包WinRAR無法批量處理,對於指定路徑中的壓縮包不能自動解壓,處理大塊頭壓縮包速度緩慢。
⑥ java前端下載完打開壓縮文件頭部錯誤
java前端下載完打開壓縮文件頭部錯誤解決辦法:
1、將本地數據備份成zip文件。
2、將備份的zip文件通過sftp上傳到文件伺服器。
3、將文件伺服器上的zip文件下載到運行伺服器。
4、將下載的zip文件解壓到本地(文件大小超過50KB時報文件被損壞)。
⑦ 壓縮包大小和文件頭標識信息不匹配
這樣的情況可能是下載錯誤或者壓縮軟體的問題造成的。
可以把電腦驅動更新一下,然後在更新下壓縮解壓軟體!
建議用別的壓縮軟體解壓,好壓不怎麼好用!
⑧ 壓縮文件處理
1.偽加密
如果壓縮文件是加密的,或文件頭正常但解壓錯誤,首先嘗試文件是否為偽加密。zip文件是否加密是通過標識符來顯示的,在每個文件的文件目錄欄位有一位專門標識了文件是否加密,將其設置為00表示該文件未加密,如果成功解壓則文件為偽加密,如果解壓出錯則改文件為真加密
使用場景:偽加密文件
zip文件
1.1winhex打開文件搜索十六進制504B0102,可以看到每個加密文件的文件頭部
1.2從50開始計算,第九個和第十個字元為加密欄位,將其設置為0000即可變成無加密狀態
rar文件
rar文件由於有頭部校驗,使用偽加密時打開文件會報錯,使用winhex修改標志位後如報錯消失且正常解壓縮,說明是偽加密,使用winhex打開rar文件,找到第24個位元組,該位元組尾數為4表示加密,0表示無加密,將尾數改為0即可破除偽加密。
2.暴力破解
通常我們可以使用ARCHPR.exe工具來破解rar文件,使用ziperello破解zip文件
使用場景:windows下加密的壓縮文件
3.明文攻擊
明文攻擊有兩個注意點: 1. 明文文件壓縮演算法要與原壓縮文件壓縮演算法相同
2.明文文件壓縮後CRC值與加密壓縮包中的文件一致
4.rar文件格式
有時候給出的RAR文件的頭部各個字塊會故意給錯導致無法識別
從文件頭部開始數第三個位元組
⑨ rar壓縮文件頭文件損壞,能修復嗎
應急解決
1.利用恢復記錄
想要修復CRC是有條件的,必須是此RAR壓縮包中有恢復記錄,而此恢復記錄是RAR壓縮包被壓縮時的可選項。
而WinRAR壓縮時默認是不放置恢復記錄的,如果提供的是這樣的RAR壓縮包,那麼用戶自己想要修復CRC錯誤是不可能的。
2.釜底抽薪
如果RAR壓縮包中的文件是那種即使文件有缺失仍能正常或較為正常地使用的(其實大多數的文件對部分數據損壞都不是非常敏感的),那便可以使出我們的終極殺招:釜底抽薪法!
其原理就是讓RAR壓縮包內損壞的文件解壓縮出來,不理會WinRAR的警告,能解壓多少就解壓多少。解壓縮軟體還是用WinRAR,不過要做小小的設置。
在右鍵點擊解壓縮文件後跳出的窗口裡,把「保留被損壞的文件」復選框選中,點擊確定開始解壓縮。不要理會解壓縮出錯的信息,解壓縮結束之後你會發現損壞的文件被解壓出來了。經過這樣解壓出來的損壞文件能正常使用的幾率還是非常高的。
做好保險工作
1.做好恢復記錄
原始RAR壓縮包在壓縮時,如果選擇放置恢復記錄,這樣用戶下載後即使CRC出錯也有自己修復的機會!
2.採取分卷壓縮
採取分卷壓縮的方法便可較大地減少因為出現不可恢復的錯誤帶來的損失。
3.老文件也加恢復記錄
有人也許會問,新壓縮的RAR壓縮包可以加入恢復記錄,那麼已經壓縮過的RAR包有沒有辦法也加上恢復記錄呢?給已經壓縮好的RAR壓縮包加上恢復紀錄是有辦法的。
只需要打開壓縮包,在「命令」菜單中選擇「保護檔案文件」即可。
小常識:
其實RAR壓縮包出錯的解決方法主要是以預防為主!如果沒有預防,等到真正出了問題,技術上也是沒辦法完美解決的!像循環冗餘校驗碼(CRC)出錯這種情況,如果RAR壓縮包不包含恢復記錄的話,用戶自己想要修復CRC是不可能的!本文的主要目的是想告訴大家一些出錯的原因以及討論一些從根本上預防出錯和把損失減少到最小的辦法而已!
⑩ 壓縮文件的文件頭破壞了,怎麼辦
沒什麼辦法
解壓軟體最先檢查的文件頭
如果沒問題 才會繼續看其它
所以 文件頭損壞,不代表後續就沒問題了
事實上 文件頭損壞,往往是整個文件都壞了
如果是你下載的 那就重新下載下吧。