通過Python內建的zipfile模組實現對zip檔案的解壓,加點料完成口令破解。本文主要給大家介紹了關於利用Python暴力破解zip檔案口令的相關資料,文中通過範例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,希望能協助到大家。
前言
zipfile模組用來做zip格式編碼的壓縮和解壓縮的,zipfile裡有兩個非常重要的class, 分別是ZipFile和ZipInfo, 在絕大多數的情況下,我們只需要使用這兩個class就可以了。ZipFile是主要的類,用來建立和讀取zip檔案而ZipInfo是儲存的zip檔案的每個檔案的資訊的。
比如要讀取一個Python zipfile 模組,這裡假設filename是一個檔案的路徑:
import zipfile z = zipfile.ZipFile(filename, 'r') for i in z.infolist(): print i.file_size, i.header_offset
這裡使用了z.infolist(), 它返回的就是壓縮包內所有檔案的資訊,就是一個ZipInfo的列表。一個ZipInfo對象中包含了壓縮包內一個檔案的資訊,其中比較常用的是 filename, file_size, header_offset, 分別為檔案名稱,檔案大小,檔案資料在壓縮包中的位移。
準備階段
首先你需要一個壓縮檔,並且給它加上密碼,樣子長成這樣
然後你就成功Get了一個內建密碼的壓縮檔,好了,這就結束了
暴力破解
首先我們Crowdsourced Security Testing道下什麼是暴力破解,其實簡單粗暴點來說,就是通過輪循的方式比對,我們一定都知道MD5加密,那麼MD5是無法復原的,那網上那些所謂的MD5解密的網站是怎麼做到的,其實也是暴力破解的方式。
舉個栗子,你通過MD5加密了一段字串 str="abc" 加密後的結果為 "3cd24fb0d6963f7d" 這麼一長串別人肯定看不懂,MD5解密網站怎麼做的,他們自己沒事乾的時候開始瞎試,把aa/cc/bb/abc 啥的都開始用MD5加密一遍,存到自己的資料庫裡,當你去查詢的時候,他們會根據你提供的 "3cd24fb0d6963f7d" 在資料庫裡面比對,如果巧合的話就能找不到,大部分情況你的加密字串稍微複雜點都找不到,這就是所謂的MD5解密,也就是暴力破解了
上代碼
import zipfile #匯入模組,它是做壓縮和解壓縮的password="123" #我們設定的口令zfile = zipfile.ZipFile("test.zip") #要解壓縮的壓縮包zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8'))#進行解壓縮操作,path為輸出的路徑
我們運行一下上面的代碼(當然你的加密口令要為123),會發現在案頭上已經把test.zip解壓出來了,完美ending,不對還差一個暴力破解呢,自己知道密碼還要破解啥有用,別著急,繼續往下看
import zipfile zfile = zipfile.ZipFile("test.zip")passFile=open('pwd.txt') #讀取你設定的密碼檔案for line in passFile.readlines(): try: password = line.strip('\n') zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8')) break except: print("又錯了")
pwd.txt裡面內容如下
1223abcaaa123
好了,這就完成了zip檔案口令的暴力破解,其實只是很巧妙的利用了try except異常機制,當解壓正常的時候就正常密碼正常,解壓失敗會報出異常,動手試試