介紹:
大家也許碰到過這種情況,從網絡上下載了一個zip文件,最后卻發現它是用密碼保護的。或者自己用密碼加密了一個很重要zip文件,但是一段時間后忘記了密碼,無法打開。這個時候,可能就需要對這個加密文件進行破解了。
來源于:
https://blog.csdn.net/jiangwlee/article/details/6911087
?
隨機計算機性能的提高,很多人可能覺得找到一個zip文件的密碼是一件很簡單的事情。通常,破解zip文件有三種方法:暴力破解、字典攻擊,以及明文攻擊。
?
在介紹這三種方法之前,我先給大家介紹幾個工具:
AZPR : http://www.elcomsoft.com
UZPC : http://www.chat.ru/~m53group
PKCrack : http://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack.html
?
具體怎么使用,大家可以參照他們的文檔,很詳細。當然,你也可以通過搜索引擎選擇其他的工具,相信還可以找到很多。好,下面開始進入正題。
?
第一步 – 了解目標文件
俗話說,知己知彼,百戰不殆。在進行破解之前,全面了解加密的文件可以幫助我們獲得很多有用的信息。比如,用WinRAR(windows)或者‘unzip -l’(linux)命令來獲取壓縮包的目錄結構,和它所包含的文件信息。你時刻要提醒自己注意的是,有沒有可能知道某個加密文件的部分信息。比如說,一個簡單的文本文件(readme.txt),或者通用的dll文件(VBXXX.dll、MFCXX.dll),或者是一個通用的.exe文件(SETUP.EXC)。盡可能的去發現任何你可能發現的東西,這一點非常重要。如果你得不到加密文件里的任何片段,那么很遺憾,你將無法使用明文攻擊這一最有效的破解利器。
?
讓我們來比較一下破解的三種方法:
1.??????暴力破解。這是最花時間的一種破解方式,除此之外你還能期待些什么?正如它的名字所表達的,暴力破解就是不斷的去嘗試所有可能的密碼。如果密碼比較短,或許在短時間內可以找到正確的密碼。但是如果比較長,比如說用64個字符長的字符串來做密碼的話,可能你重生十次后發現依然未能找到答案。
2.??????字典攻擊。相比于暴力破解這種弱智兒童,字典攻擊大概就是三歲小孩的智商。它使用了一個字典文件,然后一一嘗試文件中的每個密碼。現在在網絡上有很多的人相互共享自己的字典文件,這使得字典攻擊比暴力破解有效率得多。尤其是當目標文件是用一個弱密碼進行保護的時候,字典攻擊效率較高。但是,由于字典攻擊沒有囊括所有可能的密碼,所以對于強密碼保護的zip文件,字典攻擊毫無辦法。
?
好,現在讓我們來進入最有意思的一種方法:
3.??????明文攻擊。這是到目前為止最智能的一種攻擊方法,但只有PKCrack可以做到。眼見為實,你可以親自嘗試一下。但是首先,你需要一些前提條件:
-?????????一個加密的壓縮文件(這是當然的,沒有它你看這篇雜記干嘛)
-?????????了解壓縮文件的zip版本(比如加密平臺、zip版本號等,可以通過文件屬性了解。如果是linux平臺,用unzip -v命令可以查看一個zip包的詳細信息,包括加密算法等。)
-?????????知道壓縮包里某個文件的部分連續內容(至少12字節)
-?????????運氣
?
第二步 – 破解
如果你已經知道加密文件的部分內容,比如在某個網站上發現了它的readme.txt文件,你就可以開始嘗試破解了。首先,將這個明文文件打包成zip包,比如將readme.txt打包成readme.zip。打包完成后,需要確認二者采用的壓縮算法相同。一個簡單的判斷方法是用winRAR打開文件,同一個文件壓縮后的體積是否相同。如果相同,基本可以說明你用的壓縮算法是正確的。如果不同,就嘗試另一種壓縮算法。
?
現在,你有了兩個文件:
1.??????加密了的目標文件crypt.zip
2.??????你獲取到的明文(readme.txt)生成的zip包plain.zip
?
假設兩個文件的結構如下:
Crypt.zip
???????? |--folder1
? ? ? ? ? ? ? ? ? ?>-- file1.txt
? ? ? ? ?|-- folder2
? ? ? ? ? ? ? ? ? ?>-- readme.txt
?
Plain.zip
|-- readme.txt
?
然后,通過控制臺調用pkcrack:
pkcrack –c “folder1/readme.txt” –p readme.txt–C crypt.zip –P plain.zip
?
幾個參數的意義如下:
-?????????C : 要破解的目標文件(含路徑)
-?????????c :破解文件中的明文文件的名字(其路徑不包括系統路徑,從zip文件一層開始)
-?????????P :壓縮后的明文文件
-?????????p : 壓縮的明文文件中明文文件的名字(也就是readme.txt在plain.zip中的位置)
?
如下是一個解密過程的截圖:
?
F:\Temp>pkcrack -c crypt -p plain -Ccrypt.zip -P plain.zip
Files read. Starting stage 1 on Thu May 1311:11:35 1999
Generating 1st generation of possiblekey2_889 values...done.
Found 4194304 possible key2-values.
Now we're trying to reduce these...
Done. Left with 6963 possible Values.bestOffset is 24.
Stage 1 completed. Starting stage 2 on ThuMay 13 11:18:37 1999
key0=68d3ae85, key1=423d2b7c, key2=425b028e
Probabilistic test succeeded for 870 bytes.
Stage2 completed. Starting password searchon Thu May 13 12:10:36 1999
Key: XX XX XX XX...
Or as a string: 'xxxxxxxx' (withoutenclosing single quotes)
Finished on Thu May 13 12:10:37 1999
?
這里有一個要注意的地方:pkcrack在vista和win7下面無法正常運行,所以請保證操作系統是xp或者linux。
pkcrack還有一個重要的選項是-d,后面跟一個文件名,比如decrypt.zip,表示解密后的zip文件輸出。雖然在這個例子中,我沒有用到這個選項,但是強烈推薦使用這一選項。如果不用這一選項,解密的時間非常長,而使用這一選項的話,一般只要幾分鐘。至于為什么不用會變慢,大家可以參照它的readme文檔,大概是跟一個叫做findkey的程序有關,這里就不多解釋了。
?
如何簡單的避免密碼破解呢?
對于明文攻擊,最簡單有效的方法是進行兩次zip加密,這樣明文文件的信息就不會暴露在破解者的眼皮底下。對于字典攻擊,避免使用弱密碼,采用數字加字符的方式生成密碼。對于暴力破解,采用7個字符以上的密碼就可以讓破解者見鬼去了。
---------------------
作者:jiangwlee
來源:CSDN
原文:https://blog.csdn.net/jiangwlee/article/details/6911087
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!