python破解zip加密文件的方法
首先我們先來桌面創(chuàng)建一個(gè)文件
我們創(chuàng)建了一個(gè)名為q的txt文件然后我們將它壓縮,壓縮的時(shí)候記得設(shè)置上密碼
我這邊將密碼設(shè)置為123456, 接下來我們打開我們的編寫工具,開始寫代碼,我這里用的是pycharm,推薦大家使用
這里我們將使用到python的zipfile的模塊,編寫zip文件口令破解機(jī)要從學(xué)習(xí) zipfile庫的使用方法著手。打開 Python解釋器,我們
用help( zipfile)命令進(jìn)一步了解這個(gè)庫,并重點(diǎn)看一下 Zip File類中的 extractall方法。這個(gè)類和這個(gè)方法對我們編程破解有口令保護(hù)的Zip文件是很有用的。請注意 extractant(方法用可選參數(shù)指定密碼的方式
編寫一個(gè)腳本來測試一下zip文件庫的用法。導(dǎo)入庫后,用帶有口令保護(hù)的Zip文件的文件名,實(shí)例化一個(gè)新的 Zipfile類。要解壓這個(gè)Zip文件,我們使用 extractall方法,并在可選參數(shù)pwd上填入口令。
創(chuàng)建一個(gè).py文件,在根目錄然后在將我們的壓縮文件放入同目錄里面,項(xiàng)目結(jié)構(gòu)目錄
我們.py文件的代碼:
import zipfile zipFile = zipfile.ZipFile("q.zip","r")//這里是我們的壓縮文件 zipFile.extractall(pwd="123456")//這里是我們的密碼
這段代碼其實(shí)就是拿著密碼去解壓我們剛剛壓縮的文件,網(wǎng)上大多數(shù)教程都是這樣寫的,但是我這邊使用python3.6就會發(fā)現(xiàn)運(yùn)行的時(shí)候報(bào)錯(cuò)了
反正錯(cuò)誤大概的意思就是pwd的接收的數(shù)據(jù)應(yīng)該是bytes類型但是它得到的卻是str類型的反正就是類型錯(cuò)了,那我們就將密碼轉(zhuǎn)換為bytes類型,我們的py文件的代碼如下:
import zipfile zipFile = zipfile.ZipFile("q.zip","r") password = '123456' zipFile.extractall(pwd=str.encode(password) )
這時(shí)候我們再次運(yùn)行項(xiàng)目
這次沒有報(bào)錯(cuò)
我們可以看到在我們的項(xiàng)目根目錄下多了一個(gè)文件就是我們之前壓縮的那個(gè)文件
想了解更多zipfile的小伙伴可以點(diǎn)擊這里點(diǎn)擊打開鏈接
接下來我們繼續(xù)改造,如果用一個(gè)錯(cuò)誤密碼執(zhí)行這個(gè)腳本會發(fā)生什么情況?讓我們在腳本中增加一些捕獲和處理異常的代碼,顯示錯(cuò)誤的信息。
import zipfile zipFile = zipfile.ZipFile("q.zip","r") try: password = '123s456' zipFile.extractall(pwd=str.encode(password)) except Exception as ex: print(ex)
這時(shí)候我們的py文件代碼,并且我們還將密碼故意寫錯(cuò)來測試一下,來看一下運(yùn)行結(jié)果
在這里我們可以看到錯(cuò)誤 信息,就是告訴我們密碼錯(cuò)誤
我們可以用因口令不正確而拋出的異常來測試我們的字典文件(接下來的zidian.text)中是否有Zip文件的口令。實(shí)例化一個(gè) Zip File類之后,我們打開字典文件,遍歷并測試字典中的每個(gè)單詞。如果 extractall0函數(shù)的執(zhí)行沒有出錯(cuò),則打印一條消息,輸出正確的口令。但是,如果 extractall()函數(shù)拋出了一個(gè)口令錯(cuò)誤的異常,就忽略這個(gè)異常,并繼續(xù)測試字典中的下一個(gè)口令。
我們先創(chuàng)建一個(gè)zidian.text文件
接下來我們在zidian.text文件中編寫我們的密碼字典,每一行一個(gè)密碼,紅色部分是我們的正確密碼
然后將我們的密碼字典放入項(xiàng)目中
接著我們繼續(xù)修改我們的腳本
import zipfile zipFile = zipfile.ZipFile("q.zip","r") #打開我們的字典表 passFile = open('zidian.txt') for line in passFile.readlines(): #讀取每一行數(shù)據(jù)(每一個(gè)密碼) password = line.strip('\n') try: zipFile.extractall(pwd=str.encode(password)) print('=========密碼是:'+password+'\n') #如果密碼正確退出程序 exit(0) except Exception as ex: #跳過 pass
接下來我們看一下運(yùn)行結(jié)果
哈哈我們已經(jīng)成功破解了zip文件的密碼,到這里我們不難發(fā)現(xiàn)只要我們字典里面有密碼我們就可以破解出來
我們繼續(xù)將我們的項(xiàng)目優(yōu)化一下:
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(): #讀取每一行數(shù)據(jù)(每一個(gè)密碼) password = line.strip('\n') guess = extractFile(zFile,password) if (guess): print("=========密碼是:"+password+"\n") exit(0) if __name__=='__main__': main()
這樣就好多了!
接下來再給大家貼一個(gè)生成全部六位數(shù)數(shù)字密碼的代碼:
f = open('zidian.txt','w') for id in range(1000000): password = str(id).zfill(6)+'\n' f.write(password) f.close()
運(yùn)行成功后我們可以看到再我們的zidian.txt已經(jīng)生成好了從000000到999999都有了這樣我們只要是6位數(shù)數(shù)字密碼的zip文件我們都可以破解了!
總結(jié)
以上所述是小編給大家介紹的python破解zip加密文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Python批量查詢關(guān)鍵詞微信指數(shù)實(shí)例方法
在本篇文章中小編給大家整理的是關(guān)于Python批量查詢關(guān)鍵詞微信指數(shù)實(shí)例方法以及相關(guān)代碼,需要的朋友們可以跟著學(xué)習(xí)下。2019-06-06PyTorch中Tensor和tensor的區(qū)別及說明
這篇文章主要介紹了PyTorch中Tensor和tensor的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07python實(shí)現(xiàn)基本進(jìn)制轉(zhuǎn)換的方法
這篇文章主要介紹了python實(shí)現(xiàn)基本進(jìn)制轉(zhuǎn)換的方法,涉及Python數(shù)學(xué)運(yùn)算的取余與字符串操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07使用pytorch加載并讀取COCO數(shù)據(jù)集的詳細(xì)操作
這篇文章主要介紹了使用pytorch加載并讀取COCO數(shù)據(jù)集,基礎(chǔ)知識包括元祖、字典、數(shù)組,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Python基礎(chǔ) while循環(huán)與break、continue關(guān)鍵字
今天再帶著大家講述一下while循環(huán)。那么for循環(huán)和while循環(huán),到底有什么區(qū)別呢?下面文章就來詳細(xì)介紹,感興趣的小伙伴可以參考一下2021-10-10python 含子圖的gif生成時(shí)內(nèi)存溢出的方法
今天小編就為大家分享一篇python 含子圖的gif生成時(shí)內(nèi)存溢出的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-073種Python 實(shí)現(xiàn)酷炫進(jìn)度條的實(shí)用方法
這篇文章主要介紹了3種Python 實(shí)現(xiàn)酷炫進(jìn)度條的實(shí)用方法,文章圍繞Python的相關(guān)資料展開對實(shí)現(xiàn)進(jìn)度條的介紹,需要的小伙伴可以參考一下2022-04-04Python?Pandas數(shù)據(jù)處理高頻操作詳解
這篇文章主要為大家整理了一些Python?Pandas數(shù)據(jù)處理高頻操作,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下2022-06-06