利用Python暴力破解zip文件口令的方法詳解
前言
通過Python內(nèi)置的zipfile模塊實(shí)現(xiàn)對(duì)zip文件的解壓,加點(diǎn)料完成口令破解
zipfile模塊用來做zip格式編碼的壓縮和解壓縮的,zipfile里有兩個(gè)非常重要的class, 分別是ZipFile和ZipInfo, 在絕大多數(shù)的情況下,我們只需要使用這兩個(gè)class就可以了。ZipFile是主要的類,用來創(chuàng)建和讀取zip文件而ZipInfo是存儲(chǔ)的zip文件的每個(gè)文件的信息的。
比如要讀取一個(gè)Python zipfile 模塊,這里假設(shè)filename是一個(gè)文件的路徑:
import zipfile z = zipfile.ZipFile(filename, 'r') for i in z.infolist(): print i.file_size, i.header_offset
這里使用了z.infolist(), 它返回的就是壓縮包內(nèi)所有文件的信息,就是一個(gè)ZipInfo的列表。一個(gè)ZipInfo對(duì)象中包含了壓縮包內(nèi)一個(gè)文件的信息,其中比較常用的是 filename, file_size, header_offset, 分別為文件名,文件大小,文件數(shù)據(jù)在壓縮包中的偏移。
準(zhǔn)備階段
首先你需要一個(gè)壓縮文件,并且給它加上密碼,樣子長成這樣
然后你就成功Get了一個(gè)自帶密碼的壓縮文件,好了,這就結(jié)束了
暴力破解
首先我們先知道下什么是暴力破解,其實(shí)簡單粗暴點(diǎn)來說,就是通過輪循的方式比對(duì),我們一定都知道MD5加密,那么MD5是不可逆的,那網(wǎng)上那些所謂的MD5解密的網(wǎng)站是怎么做到的,其實(shí)也是暴力破解的方式。
舉個(gè)栗子,你通過MD5加密了一段字符串 str="abc"
加密后的結(jié)果為 "3cd24fb0d6963f7d" 這么一長串別人肯定看不懂,MD5解密網(wǎng)站怎么做的,他們自己沒事干的時(shí)候開始瞎試,把a(bǔ)a/cc/bb/abc 啥的都開始用MD5加密一遍,存到自己的數(shù)據(jù)庫里,當(dāng)你去查詢的時(shí)候,他們會(huì)根據(jù)你提供的 "3cd24fb0d6963f7d" 在數(shù)據(jù)庫里面比對(duì),如果巧合的話就能找不到,大部分情況你的加密字符串稍微復(fù)雜點(diǎn)都找不到,這就是所謂的MD5解密,也就是暴力破解了
上代碼
import zipfile #導(dǎo)入模塊,它是做壓縮和解壓縮的 password="123" #我們?cè)O(shè)定的口令 zfile = zipfile.ZipFile("test.zip") #要解壓縮的壓縮包 zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8')) #進(jìn)行解壓縮操作,path為輸出的路徑
我們運(yùn)行一下上面的代碼(當(dāng)然你的加密口令要為123),會(huì)發(fā)現(xiàn)在桌面上已經(jīng)把test.zip解壓出來了,完美ending,不對(duì)還差一個(gè)暴力破解呢,自己知道密碼還要破解啥有用,別著急,繼續(xù)往下看
import zipfile zfile = zipfile.ZipFile("test.zip") passFile=open('pwd.txt') #讀取你設(shè)定的密碼文件 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("又錯(cuò)了")
pwd.txt里面內(nèi)容如下
1223 abc aaa 123
好了,這就完成了zip文件口令的暴力破解,其實(shí)只是很巧妙的利用了try except異常機(jī)制,當(dāng)解壓正常的時(shí)候就正常密碼正常,解壓失敗會(huì)報(bào)出異常,動(dòng)手試試
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
python對(duì)象轉(zhuǎn)字典的兩種實(shí)現(xiàn)方式示例
這篇文章主要介紹了python對(duì)象轉(zhuǎn)字典的兩種實(shí)現(xiàn)方式,結(jié)合實(shí)例形式分析了Python字典與對(duì)象數(shù)據(jù)類型轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2019-11-11django日志默認(rèn)打印request請(qǐng)求信息的方法示例
這篇文章主要給大家介紹了關(guān)于django日志默認(rèn)打印request請(qǐng)求信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05python實(shí)現(xiàn)Mysql數(shù)據(jù)庫批量新增數(shù)據(jù)的場景分析
這篇文章主要介紹了python實(shí)現(xiàn)Mysql數(shù)據(jù)庫批量新增數(shù)據(jù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03編寫Python爬蟲抓取暴走漫畫上gif圖片的實(shí)例分享
這篇文章主要介紹了編寫Python爬蟲抓取暴走漫畫上gif圖片的實(shí)例分享,示例代碼為Python3,利用到了urllib模塊、request模塊和BeautifulSoup模塊,需要的朋友可以參考下2016-04-04使用Python快樂學(xué)數(shù)學(xué)Github萬星神器Manim簡介
這篇文章主要介紹了使用Python快樂學(xué)數(shù)學(xué)Github萬星神器Manim簡介,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Python猴子補(bǔ)丁知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是關(guān)于Python猴子補(bǔ)丁知識(shí)點(diǎn)總結(jié),需要的朋友們學(xué)習(xí)下。2020-01-01Python中兩個(gè)列表數(shù)字相加的4種方法示例詳解
這篇文章主要給大家介紹了關(guān)于Python中兩個(gè)列表數(shù)字相加的4種方法,我們可以使用Python的加號(hào)和減號(hào)運(yùn)算符來實(shí)現(xiàn)兩個(gè)數(shù)字的相加減,需要的朋友可以參考下2023-08-08