您好,登錄后才能下訂單哦!
首先我們先來桌面創建一個文件
我們創建了一個名為q的txt文件然后我們將它壓縮,壓縮的時候記得設置上密碼
我這邊將密碼設置為123456, 接下來我們打開我們的編寫工具,開始寫代碼,我這里用的是pycharm,推薦大家使用
這里我們將使用到python的zipfile的模塊,編寫zip文件口令破解機要從學習 zipfile庫的使用方法著手。打開 Python解釋器,我們
用help( zipfile)命令進一步了解這個庫,并重點看一下 Zip File類中的 extractall方法。這個類和這個方法對我們編程破解有口令保護的Zip文件是很有用的。請注意 extractant(方法用可選參數指定密碼的方式
編寫一個腳本來測試一下zip文件庫的用法。導入庫后,用帶有口令保護的Zip文件的文件名,實例化一個新的 Zipfile類。要解壓這個Zip文件,我們使用 extractall方法,并在可選參數pwd上填入口令。
創建一個.py文件,在根目錄然后在將我們的壓縮文件放入同目錄里面,項目結構目錄
我們.py文件的代碼:
import zipfile zipFile = zipfile.ZipFile("q.zip","r")//這里是我們的壓縮文件 zipFile.extractall(pwd="123456")//這里是我們的密碼
這段代碼其實就是拿著密碼去解壓我們剛剛壓縮的文件,網上大多數教程都是這樣寫的,但是我這邊使用python3.6就會發現運行的時候報錯了
反正錯誤大概的意思就是pwd的接收的數據應該是bytes類型但是它得到的卻是str類型的反正就是類型錯了,那我們就將密碼轉換為bytes類型,我們的py文件的代碼如下:
import zipfile zipFile = zipfile.ZipFile("q.zip","r") password = '123456' zipFile.extractall(pwd=str.encode(password) )
這時候我們再次運行項目
這次沒有報錯
我們可以看到在我們的項目根目錄下多了一個文件就是我們之前壓縮的那個文件
想了解更多zipfile的小伙伴可以點擊這里點擊打開鏈接
接下來我們繼續改造,如果用一個錯誤密碼執行這個腳本會發生什么情況?讓我們在腳本中增加一些捕獲和處理異常的代碼,顯示錯誤的信息。
import zipfile zipFile = zipfile.ZipFile("q.zip","r") try: password = '123s456' zipFile.extractall(pwd=str.encode(password)) except Exception as ex: print(ex)
這時候我們的py文件代碼,并且我們還將密碼故意寫錯來測試一下,來看一下運行結果
在這里我們可以看到錯誤 信息,就是告訴我們密碼錯誤
我們可以用因口令不正確而拋出的異常來測試我們的字典文件(接下來的zidian.text)中是否有Zip文件的口令。實例化一個 Zip File類之后,我們打開字典文件,遍歷并測試字典中的每個單詞。如果 extractall0函數的執行沒有出錯,則打印一條消息,輸出正確的口令。但是,如果 extractall()函數拋出了一個口令錯誤的異常,就忽略這個異常,并繼續測試字典中的下一個口令。
我們先創建一個zidian.text文件
接下來我們在zidian.text文件中編寫我們的密碼字典,每一行一個密碼,紅色部分是我們的正確密碼
然后將我們的密碼字典放入項目中
接著我們繼續修改我們的腳本
import zipfile zipFile = zipfile.ZipFile("q.zip","r") #打開我們的字典表 passFile = open('zidian.txt') for line in passFile.readlines(): #讀取每一行數據(每一個密碼) password = line.strip('\n') try: zipFile.extractall(pwd=str.encode(password)) print('=========密碼是:'+password+'\n') #如果密碼正確退出程序 exit(0) except Exception as ex: #跳過 pass
接下來我們看一下運行結果
哈哈我們已經成功破解了zip文件的密碼,到這里我們不難發現只要我們字典里面有密碼我們就可以破解出來
我們繼續將我們的項目優化一下:
import zipfile def extractFile(zFile,password): try: zFile.extractall(pwd=str.encode(password)) #如果成功返回密碼 return password except: return def main(): zFile = zipfile.ZipFile("q.zip","r") #打開我們的字典表 passFile = open('zidian.txt') for line in passFile.readlines(): #讀取每一行數據(每一個密碼) password = line.strip('\n') guess = extractFile(zFile,password) if (guess): print("=========密碼是:"+password+"\n") exit(0) if __name__=='__main__': main()
這樣就好多了!
接下來再給大家貼一個生成全部六位數數字密碼的代碼:
f = open('zidian.txt','w') for id in range(1000000): password = str(id).zfill(6)+'\n' f.write(password) f.close()
運行成功后我們可以看到再我們的zidian.txt已經生成好了從000000到999999都有了這樣我們只要是6位數數字密碼的zip文件我們都可以破解了!
總結
以上所述是小編給大家介紹的python破解zip加密文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。