zip偽加密
zip文件是由3部分組成,詳見文末
壓縮源文件數據區+壓縮源文件目錄區+壓縮源文件目錄結束標志
在壓縮源文件數據區有個2字節的 全局方式位標記 ,在壓縮源文件目錄區也有個2字節的 全局方式位標記 ,都用以標記是否加密,如下圖:


若是沒有加密的zip,兩處標記都是00 00

加密的zip兩次都不是00 00,好像不同版本的壓縮軟件或是算法,這里的值會不同,我看之前網上多見的是09 00

若把未加密的zip壓縮源文件目錄區的全局方式位標記改為 01 00 (或者 09 00),就會被壓縮軟件認為是已加密,即所謂的偽加密

破解偽加密的zip,只要把壓縮源文件目錄區的全局方式位標記改為 00 00 即可解壓
爆破
詳分有暴力,掩碼,字典
1.暴力:選擇密碼范圍,長度等,由軟件組合生成密碼進行爆破
2.掩碼:知道密碼中的一部分,只需按規則構造其余部分
3.字典:通常是多數用戶常用的一些密碼集合,導入字典文件用其中的密碼進行爆破
推薦一款windows下的軟件 advanced zip password recovery
用法的話,百度就很多了

我寫過一個簡單的通過字典爆破zip的python腳本
#!/usr/bin/python # -*- coding: UTF-8 -*- import zipfile import os def extractFile(zFile,password): try: zFile.extractall(path=os.getcwd(),pwd=password) except: return False else: return password def main(): zFile=zipfile.ZipFile(raw_input('zip file:')) passFile=open(raw_input('password file:')) for password in passFile.readlines(): print password password=password.strip('\n') result=extractFile(zFile,password) if result: print 'success:'+result break if __name__=='__main__': main() raw_input('press any key to exit')
CRC32碰撞
CRC校驗實用程序庫 在數據存儲和數據通訊領域,為了保證數據的正確,就不得不采用檢錯的手段。在諸多檢錯手段中,CRC是最著名的一種。CRC的全稱是循環冗余校驗。
總之每個文件都有唯一的CRC32值,即便數據中一個bit發生變化,也會導致CRC32值不同。若是知道一段數據的長度和CRC32值,便可窮舉數據,與其CRC32對照,以此達到暴力猜解的目的。但通常只適用於較小文本文件。
比如這里有一個加密的rar,直接雙擊就可以看見其中信息,而且我知道其中全是數字,便可寫腳本爆破
,
1 from zlib import crc32 2 import random 3 4 char='0123456789' 5 6 def crc32_f(data): 7 return hex(crc32(data)&0xffffffff)[2:10] 8 9 length=input('length:') 10 crc32_=raw_input('crc32:').lower() 11 12 while True: 13 text='' 14 for i in range(length): 15 text+=char[random.randint(0,len(char)-1)] 16 if crc32_f(text)==crc32_: 17 raw_input('find it:'+text) 18 exit
python2中的crc32()計算的crc32值是有符號的,所以&0xffffffff轉換成無符號數值
由於全是數字,7位也不算太高,跑了3分鍾左右便出結果了

已知明文攻擊
如果得到了加密壓縮包中的某個文件,那么就可以通過明文攻擊來獲取壓縮密碼

這里得到了163264.txt文件,以及一個加密的misc2.zip,misc2.zip中的文件即是我們得到的這個文件,先將已知的文件壓縮,從CRC32也可以看出兩個文件是一樣的

然后在軟件中選擇明文(plain-text),填入路徑點擊開始

我跑了大約一兩分鍾

如果出現以下錯誤,那么一般就是你使用的壓縮軟件或是壓縮算法和待破解的壓縮包所使用的軟件不同,可以用WinRAR,7z,2345好壓等都試一下
No matching files in selected archives.If you'd like to run plaintext attack using only part of the file, please modify the archives so each of them will contain one file only.
在選定的檔案中沒有匹配的文件。如果您想要僅使用文件的一部分執行明文攻擊,請修改檔案,使每個檔案中只包含一個文件。
參考:
zip文件構成:https://blog.csdn.net/wclxyn/article/details/7288994
