Python輕松破解加密壓縮包教程詳解
相信大家都遇到過這種情況,下載文件的時候遇到壓縮包又沒有密碼,或者說自己設(shè)置的加密密碼,但是忘記了,就很難受~
但是~
在Python程序員面前,這都是小問題!
話不多說,我們直接開始操作.。
一、準(zhǔn)備工作
我們先打開一個加密的壓縮包嘗試原始方法解壓一下
然后彈出來讓我輸密碼
正常打不開,如果你點擊跳過所有加密,它也不會打開,直接就關(guān)閉當(dāng)前你窗口了。
那正常情況下,我們能怎么辦,什么也辦不了,下一個會更乖。
我們打開pycharm
,新建一個py
文件,暫且我把它命名為zip_pwd
靈魂三問:沒有pycharm?Python也沒有?還不會安裝?私我
在這之前呢,我們先要去收集一些信息,比如當(dāng)前的密碼位數(shù)與類型。
類型包含包括它有沒有特殊字符,有沒有字符串,是不是純數(shù)字。
假設(shè)我們現(xiàn)在已知信息呢,總共有兩個,已知當(dāng)前密碼類型為整形,六位數(shù)密碼。
我們先創(chuàng)建一個純數(shù)字6位密碼庫,你也可以去GitHub上面下載一個包含所有字符的密碼字典庫,這個現(xiàn)在是開源的,破解時間具體要看設(shè)置的密碼長短、復(fù)雜與否。
二、開始操作
回到正題
已知我們現(xiàn)在的密碼是六位純數(shù)字,那么怎么自己創(chuàng)建密碼字典呢?
首先我們要完成一個文件寫入的功能
首先聲明一個變量 f
f = open() # Python內(nèi)置函數(shù)
open
是一個IO流,可以完成文件讀寫功能。
比如說我先想在一個文件里寫入一些內(nèi)容,就可以通過open
去做 。
然后我們通過open
創(chuàng)建一個文件,名字暫且命名為possword.txt
,在加入一個寫入方式,以 w
方式去寫入。
f = open('password.txt','w')
然后通過循環(huán)去創(chuàng)建密碼,密碼設(shè)置個1000000
for id in range(1000000)
這時候需要創(chuàng)建一個password
變量生成密碼,創(chuàng)建之前先導(dǎo)入一個方法的包。
import zipfile
然后通過password
可以開始生成密碼了 ,這個zfill
等于 6位的,再加上換行,因為生成一個密碼就要換一行,并且生成密碼應(yīng)該是一個字符串類型。
password = str(id).zfill(6) + '\n'
然后通過f.write
方法把password
寫入到文件當(dāng)中
f.write(password)
寫進去之后要去關(guān)閉當(dāng)前的文件流
f.close()
然后我們來嘗試去生成一下,看看能不能成功。
import zipfile f = open('password.txt','w') for id in range(1000000) password = str(id).zfill(6) + '\n' f.write(password) f.close()
可以看到這里給我們生成了一個possword.txt
密碼字典,它是一個密碼庫。
從000000一直到999999它已經(jīng)全部生成出來了。
這就是一個簡單的密碼字典生成方式,如果要去生成一個比較復(fù)雜的密碼肯定不會這么簡單,給你們看個一個復(fù)雜的,這里我就不演示了,看看就可以了,將近寫了一萬多行。
所以你們自己想要去生成的話,還得專門好好學(xué)一下。
搞定六位數(shù)數(shù)字密碼字典后我們需要完成解決壓縮文件密碼的函數(shù)
首先我們先來聲明一個函數(shù) ,取個名字叫file
,然后加入兩個行參。
第一個是我的壓縮文件zipfile
,第二個是當(dāng)前需要傳入的密碼password
def pwd_file(zipfile,password):
傳完行參后寫上一個異常處理,調(diào)用zipfile
,它里面會有一個方法extractall
傳入兩個值,第一個是pwd
傳入字節(jié),在字節(jié)里傳入行參,編碼集是utf8
tey: zipfile.extractall(pwd=bytes(password, 'utf8'))
然后print
壓縮包密碼,打印password
print('壓縮包密碼:', password)
因為密碼庫里面密碼比較多,只有一個正確的,其它的都是錯誤的,所以肯定會報錯,所以我們要寫一個異常處理,寫上一個pass
就可以了,報錯了就給它pass掉。
except: pass
這就是一個簡單的函數(shù),我們通過zipfile它里面的一個extractall方法去智能的獲取正確密碼,它是可以自動匹配密碼的。
所以說Python牛逼,很多東西都不需要我們?nèi)?,直接調(diào)用就好了。
然后我們來寫上執(zhí)行函數(shù)
先寫上一個main
函數(shù)
def main():
在main
函數(shù)里面,通過zipfile
方法把加密的壓縮文件代入到代碼中。
zipFlie = zipfile.ZipFile('./獲取文件密碼.zip')
通過pwd
生成一個list
變量,打開生成的密碼文件。
pwd_list = open('./password.txt')
然后我們需要一個一個去試密碼,這個是一行一行的去讀。
for line in pwd_list.readlines():
讀到一個就把它寫進去,拿到一個密碼刪除一個換行符。
pwd = line.strip('\n')
通過pwd_file
調(diào)用之前寫的函數(shù),傳zipFlie
和pwd
pwd_file(zipFlie, pwd)
最后寫入函數(shù)入口,寫上一個main
,為什么要寫這個函數(shù)入口呢?不寫也可以運行的。
因為它是用來去做測試的。
if __name__
是一個測試入口,什么意思呢?
比如我在當(dāng)前文件下導(dǎo)入了其它文件庫,但是我又不想用,我就可以通過if讓它不去運行,所以可寫可不寫,當(dāng)一個延伸。
if __name__ == '__main__': main()
全部代碼
import zipfile f = open('password.txt', 'w') for id in range(1000000): password = str(id).zfill(6) + '\n' f.write(password) f.close() def pwd_file(zipFlie, password): try: zipFlie.extractall(pwd=bytes(password, 'utf8')) print('壓縮包密碼:', password) except: pass def main(): zipFlie = zipfile.ZipFile('./獲取文件密碼.zip') pwd_list = open('./password.txt') for line in pwd_list.readlines(): pwd = line.strip('\n') pwd_file(zipFlie, pwd) if __name__ == '__main__': main()
我們看看效果,可以看到壓縮包的密碼已經(jīng)打印出來了。
如果你要獲取的密碼越復(fù)雜,你的電腦越好就計算的越快。
兄弟們,學(xué)廢了嗎?
原創(chuàng)不易,點個贊支持一下哇~
到此這篇關(guān)于Python輕松破解加密壓縮包詳解的文章就介紹到這了,更多相關(guān)Python破解加密壓縮包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pandas之使用drop_duplicates:去除重復(fù)項
這篇文章主要介紹了Pandas之使用drop_duplicates:去除重復(fù)項方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12Python實現(xiàn)信用卡系統(tǒng)(支持購物、轉(zhuǎn)賬、存取錢)
這篇文章主要介紹了Python實現(xiàn)信用卡系統(tǒng)(支持購物、轉(zhuǎn)賬、存取錢)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06Python3中str、bytes、bytearray轉(zhuǎn)化
本文主要介紹了Python3中str、bytes、bytearray轉(zhuǎn)化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Python?的counter()函數(shù)解析與示例詳解
在?Python?中,?collections?模塊提供了?Counter?類,用于計算可迭代對象中元素的數(shù)量,?Counter?是一個字典的子類,它以元素作為鍵,以元素出現(xiàn)的次數(shù)作為值進行計數(shù),本文給大家介紹Python?的counter()函數(shù),感興趣的朋友一起看看吧2023-08-08Python RuntimeError: thread.__init__() not called解決方法
這篇文章主要介紹了Python RuntimeError: thread.__init__() not called解決方法,需要的朋友可以參考下2015-04-04