介紹:
大家也許碰到過這種情況,從網(wǎng)絡(luò)上下載了一個(gè)zip文件,最后卻發(fā)現(xiàn)它是用密碼保護(hù)的。或者自己用密碼加密了一個(gè)很重要zip文件,但是一段時(shí)間后忘記了密碼,無法打開。這個(gè)時(shí)候,可能就需要對(duì)這個(gè)加密文件進(jìn)行破解了。
來源于:
https://blog.csdn.net/jiangwlee/article/details/6911087
?
隨機(jī)計(jì)算機(jī)性能的提高,很多人可能覺得找到一個(gè)zip文件的密碼是一件很簡單的事情。通常,破解zip文件有三種方法:暴力破解、字典攻擊,以及明文攻擊。
?
在介紹這三種方法之前,我先給大家介紹幾個(gè)工具:
AZPR : http://www.elcomsoft.com
UZPC : http://www.chat.ru/~m53group
PKCrack : http://www.unix-ag.uni-kl.de/~conrad/krypto/pkcrack.html
?
具體怎么使用,大家可以參照他們的文檔,很詳細(xì)。當(dāng)然,你也可以通過搜索引擎選擇其他的工具,相信還可以找到很多。好,下面開始進(jìn)入正題。
?
第一步 – 了解目標(biāo)文件
俗話說,知己知彼,百戰(zhàn)不殆。在進(jìn)行破解之前,全面了解加密的文件可以幫助我們獲得很多有用的信息。比如,用WinRAR(windows)或者‘unzip -l’(linux)命令來獲取壓縮包的目錄結(jié)構(gòu),和它所包含的文件信息。你時(shí)刻要提醒自己注意的是,有沒有可能知道某個(gè)加密文件的部分信息。比如說,一個(gè)簡單的文本文件(readme.txt),或者通用的dll文件(VBXXX.dll、MFCXX.dll),或者是一個(gè)通用的.exe文件(SETUP.EXC)。盡可能的去發(fā)現(xiàn)任何你可能發(fā)現(xiàn)的東西,這一點(diǎn)非常重要。如果你得不到加密文件里的任何片段,那么很遺憾,你將無法使用明文攻擊這一最有效的破解利器。
?
讓我們來比較一下破解的三種方法:
1.??????暴力破解。這是最花時(shí)間的一種破解方式,除此之外你還能期待些什么?正如它的名字所表達(dá)的,暴力破解就是不斷的去嘗試所有可能的密碼。如果密碼比較短,或許在短時(shí)間內(nèi)可以找到正確的密碼。但是如果比較長,比如說用64個(gè)字符長的字符串來做密碼的話,可能你重生十次后發(fā)現(xiàn)依然未能找到答案。
2.??????字典攻擊。相比于暴力破解這種弱智兒童,字典攻擊大概就是三歲小孩的智商。它使用了一個(gè)字典文件,然后一一嘗試文件中的每個(gè)密碼。現(xiàn)在在網(wǎng)絡(luò)上有很多的人相互共享自己的字典文件,這使得字典攻擊比暴力破解有效率得多。尤其是當(dāng)目標(biāo)文件是用一個(gè)弱密碼進(jìn)行保護(hù)的時(shí)候,字典攻擊效率較高。但是,由于字典攻擊沒有囊括所有可能的密碼,所以對(duì)于強(qiáng)密碼保護(hù)的zip文件,字典攻擊毫無辦法。
?
好,現(xiàn)在讓我們來進(jìn)入最有意思的一種方法:
3.??????明文攻擊。這是到目前為止最智能的一種攻擊方法,但只有PKCrack可以做到。眼見為實(shí),你可以親自嘗試一下。但是首先,你需要一些前提條件:
-?????????一個(gè)加密的壓縮文件(這是當(dāng)然的,沒有它你看這篇雜記干嘛)
-?????????了解壓縮文件的zip版本(比如加密平臺(tái)、zip版本號(hào)等,可以通過文件屬性了解。如果是linux平臺(tái),用unzip -v命令可以查看一個(gè)zip包的詳細(xì)信息,包括加密算法等。)
-?????????知道壓縮包里某個(gè)文件的部分連續(xù)內(nèi)容(至少12字節(jié))
-?????????運(yùn)氣
?
第二步 – 破解
如果你已經(jīng)知道加密文件的部分內(nèi)容,比如在某個(gè)網(wǎng)站上發(fā)現(xiàn)了它的readme.txt文件,你就可以開始嘗試破解了。首先,將這個(gè)明文文件打包成zip包,比如將readme.txt打包成readme.zip。打包完成后,需要確認(rèn)二者采用的壓縮算法相同。一個(gè)簡單的判斷方法是用winRAR打開文件,同一個(gè)文件壓縮后的體積是否相同。如果相同,基本可以說明你用的壓縮算法是正確的。如果不同,就嘗試另一種壓縮算法。
?
現(xiàn)在,你有了兩個(gè)文件:
1.??????加密了的目標(biāo)文件crypt.zip
2.??????你獲取到的明文(readme.txt)生成的zip包plain.zip
?
假設(shè)兩個(gè)文件的結(jié)構(gòu)如下:
Crypt.zip
???????? |--folder1
? ? ? ? ? ? ? ? ? ?>-- file1.txt
? ? ? ? ?|-- folder2
? ? ? ? ? ? ? ? ? ?>-- readme.txt
?
Plain.zip
|-- readme.txt
?
然后,通過控制臺(tái)調(diào)用pkcrack:
pkcrack –c “folder1/readme.txt” –p readme.txt–C crypt.zip –P plain.zip
?
幾個(gè)參數(shù)的意義如下:
-?????????C : 要破解的目標(biāo)文件(含路徑)
-?????????c :破解文件中的明文文件的名字(其路徑不包括系統(tǒng)路徑,從zip文件一層開始)
-?????????P :壓縮后的明文文件
-?????????p : 壓縮的明文文件中明文文件的名字(也就是readme.txt在plain.zip中的位置)
?
如下是一個(gè)解密過程的截圖:
?
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
?
這里有一個(gè)要注意的地方:pkcrack在vista和win7下面無法正常運(yùn)行,所以請(qǐng)保證操作系統(tǒng)是xp或者linux。
pkcrack還有一個(gè)重要的選項(xiàng)是-d,后面跟一個(gè)文件名,比如decrypt.zip,表示解密后的zip文件輸出。雖然在這個(gè)例子中,我沒有用到這個(gè)選項(xiàng),但是強(qiáng)烈推薦使用這一選項(xiàng)。如果不用這一選項(xiàng),解密的時(shí)間非常長,而使用這一選項(xiàng)的話,一般只要幾分鐘。至于為什么不用會(huì)變慢,大家可以參照它的readme文檔,大概是跟一個(gè)叫做findkey的程序有關(guān),這里就不多解釋了。
?
如何簡單的避免密碼破解呢?
對(duì)于明文攻擊,最簡單有效的方法是進(jìn)行兩次zip加密,這樣明文文件的信息就不會(huì)暴露在破解者的眼皮底下。對(duì)于字典攻擊,避免使用弱密碼,采用數(shù)字加字符的方式生成密碼。對(duì)于暴力破解,采用7個(gè)字符以上的密碼就可以讓破解者見鬼去了。
---------------------
作者:jiangwlee
來源:CSDN
原文:https://blog.csdn.net/jiangwlee/article/details/6911087
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!