2011-08-01 112 views
14

我有幾個zip和rar文件,我正在使用,我試圖分析每個文件是如何壓縮的屬性(壓縮級別,壓縮算法(例如deflate,LZMA,BZip2),字典大小,字大小等等),我還沒有想出一個辦法來做到這一點。如何確定ZIP/RAR文件的壓縮方法

有什麼辦法來分析文件來確定這些屬性,軟件或其他?

乾杯和謝謝!

回答

4

我建議hachoir-wx看看這些文件。 How to install a Python package,或者您可以在使用Windows時使用PyPM嘗試ActivePython。如果您已經安裝了必要的hachoir包,你可以做這樣的事情來運行GUI:

蟒蛇C:\ Python27 \腳本\ hach​​oir-WX

它使您能夠通過瀏覽RAR和ZIP文件的數據字段。一個例子見screenshot

對於RAR文件,查看位於WinRAR安裝目錄中的technote.txt文件。這給出了RAR規範的詳細信息。您可能會對以下內容感興趣:

HEAD_FLAGS  Bit flags: 2 bytes 
       0x10 - information from previous files is used (solid flag) 
       bits 7 6 5 (for RAR 2.0 and later) 
         0 0 0 - dictionary size 64 KB 
         0 0 1 - dictionary size 128 KB 
         0 1 0 - dictionary size 256 KB 
         0 1 1 - dictionary size 512 KB 
         1 0 0 - dictionary size 1024 KB 
         1 0 1 - dictionary size 2048 KB 
         1 1 0 - dictionary size 4096 KB 
         1 1 1 - file is directory 

字典大小也可以在WinRAR GUI中找到。

METHOD   Packing method 1 byte 
       0x30 - storing 
       0x31 - fastest compression 
       0x32 - fast compression 
       0x33 - normal compression 
       0x34 - good compression 
       0x35 - best compression 

而且Wikipedia也知道這一點:

的RAR壓縮實用程序是專有的,具有封閉的算法。 RAR由Eugene Roshal的兄長Alexander L. Roshal擁有。 RAR第3版基於Lempel-Ziv(LZSS)和部分匹配(PPM)壓縮預測,特別是由Dmitry Shkarin提供的PPMII的PPMd實現。

對於ZIP文件,我首先看看specificationsZIP Wikipedia page。這些可能很有趣:

general purpose bit flag: (2 bytes) 
    compression method: (2 bytes) 
+0

太棒了,謝謝! – Intenex

+0

第一個文件的METHOD字節通常在偏移量0x2D處找到。 –

0

該類型很容易,只需查看文件標題(PKRar)。

至於其他方面,我懷疑壓縮內容中的信息是否可用。

+0

是的,它是可用的(至少爲rar)。但如何明顯取決於具體的文件格式。 – Artefacto

+3

如果信息不可用,則無法解壓縮數據。 –

1

對於ZIP文件,有一個命令zipinfo。

+0

當我輸入到我的控制檯時,它說沒有找到這樣的命令。 –

6

對於ZIP - 是的,zipinfo

對於RAR,頭很容易與任何7Zip的或WinRAR的發現,閱讀所附文件

+0

感謝您的提示!當它生成.DOCX文件時,我需要找出MS Word使用的ZIP設置。 DOCX文件是一個ZIP存檔,包含多個XML文件和嵌入式媒體文件。這些你可以使用你選擇的工具進行批處理,但最後你需要用MS Word接受的設置將它重新打包成一個ZIP文件!我用zipinfo來分析MS Word寫的DOCX文件。我應該對DOCX ZIP格式做出最終結論,我會在這裏發佈。 – porg

7

這是一個相當古老的問題,但我想在把我的無論如何,因爲上面的一些方法對我來說並不容易。

你也可以用7-Zip來確定。打開檔案文件之後存在用於壓縮的方法柱:

7zip properties

0

通過的7-Zip(或的p7zip)命令行:

7z l -slt archive.file 

如果專門爲壓縮方法尋找:

7z l -slt archive.file | grep -e '^---' -e '^Path =' -e '^Method =' 
+0

我也可以使用['grep -E'^((---)|(Path =)|(Method =))''](https://unix.stackexchange.com/a/37316/13308) 。 – palswim