相信大家都遇到過這種情況,下載檔案的時候遇到壓縮包又沒有密碼,或者說自己設定的加密密碼,但是忘記了,就很難受~

但是~
在Python程式員面前,這都是小問題!

話不多說,我們直接開始操作.,
一、準備作業
我們先打開一個加密的壓縮包嘗試原始方法解壓一下

然后彈出來讓我輸密碼

正常打不開,如果你點擊跳過所有加密,它也不會打開,直接就關閉當前你視窗了,
那正常情況下,我們能怎么辦,什么也辦不了,下一個會更乖,

我們打開pycharm,新建一個py檔案,暫且我把它命名為zip_pwd
靈魂三問:沒有pycharm?Python也沒有?還不會安裝?
# 我給大家準備了這些資料,直接在群里就可以免費領取了, # 一群:872937351 (群滿了的話加二群) # 二群:924040232 # python學習路線匯總 # 精品Python學習書籍100本 # Python入門視頻合集 # Python實戰案例 # Python面試題 # Python相關軟體工具/pycharm永久激活

在這之前呢,我們先要去收集一些資訊,比如當前的密碼位數與型別,
型別包含包括它有沒有特殊字符,有沒有字串,是不是純數字,
假設我們現在已知資訊呢,總共有兩個,已知當前密碼型別為整形,六位數密碼,
我們先創建一個純數字6位密碼庫,你也可以去GitHub上面下載一個包含所有字符的密碼字典庫,這個現在是開源的,破解時間具體要看設定的密碼長短、復雜與否,

二、開始操作
回到正題
已知我們現在的密碼是六位純數字,那么怎么自己創建密碼字典呢?
首先我們要完成一個檔案寫入的功能
首先宣告一個變數 f
f = open() # Python內置函式
open是一個IO流,可以完成檔案讀寫功能,
比如說我先想在一個檔案里寫入一些內容,就可以通過open去做 ,
然后我們通過open創建一個檔案,名字暫且命名為possword.txt,在加入一個寫入方式,以 w方式去寫入,
f = open('password.txt','w')
然后通過回圈去創建密碼,密碼設定個1000000
for id in range(1000000)
這時候需要創建一個password變數生成密碼,創建之前先匯入一個方法的包,
import zipfile
然后通過password可以開始生成密碼了 ,這個zfill等于 6位的,再加上換行,因為生成一個密碼就要換一行,并且生成密碼應該是一個字串型別,
password = str(id).zfill(6) + '\n'
然后通過f.write方法把password寫入到檔案當中
f.write(password)
寫進去之后要去關閉當前的檔案流
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它已經全部生成出來了,

這就是一個簡單的密碼字典生成方式,如果要去生成一個比較復雜的密碼肯定不會這么簡單,給你們看個一個復雜的,這里我就不演示了,看看就可以了,將近寫了一萬多行,

所以你們自己想要去生成的話,還得專門好好學一下,

搞定六位數數字密碼字典后我們需要完成解決壓縮檔案密碼的函式
首先我們先來宣告一個函式 ,取個名字叫file,然后加入兩個行參,
第一個是我的壓縮檔案zipfile,第二個是當前需要傳入的密碼password
def pwd_file(zipfile,password):
傳完行參后寫上一個例外處理,呼叫zipfile,它里面會有一個方法extractall傳入兩個值,第一個是pwd傳入位元組,在位元組里傳入行參,編碼集是utf8
tey: zipfile.extractall(pwd=bytes(password, 'utf8'))
然后print壓縮包密碼,列印password
print('壓縮包密碼:', password)
因為密碼庫里面密碼比較多,只有一個正確的,其它的都是錯誤的,所以肯定會報錯,所以我們要寫一個例外處理,寫上一個pass就可以了,報錯了就給它pass掉,
except: pass
這就是一個簡單的函式,我們通過zipfile它里面的一個extractall方法去智能的獲取正確密碼,它是可以自動匹配密碼的,
所以說Python牛逼,很多東西都不需要我們去寫,直接呼叫就好了,

然后我們來寫上執行函式
先寫上一個main函式
def main():
在main函式里面,通過zipfile方法把加密的壓縮檔案代入到代碼中,
zipFlie = zipfile.ZipFile('./獲取檔案密碼.zip')
通過pwd生成一個list變數,打開生成的密碼檔案,
pwd_list = open('./password.txt')
然后我們需要一個一個去試密碼,這個是一行一行的去讀,
for line in pwd_list.readlines():
讀到一個就把它寫進去,拿到一個密碼洗掉一個換行符,
pwd = line.strip('\n')
通過pwd_file呼叫之前寫的函式,傳zipFlie和pwd
pwd_file(zipFlie, pwd)
最后寫入函式入口,寫上一個main,為什么要寫這個函式入口呢?不寫也可以運行的,
因為它是用來去做測驗的,
if __name__是一個測驗入口,什么意思呢?
比如我在當前檔案下匯入了其它檔案庫,但是我又不想用,我就可以通過if讓它不去運行,所以可寫可不寫,當一個延伸,
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() #視頻放在評論區
我們看看效果,可以看到壓縮包的密碼已經列印出來了,

如果你要獲取的密碼越復雜,你的電腦越好就計算的越快,
兄弟們,學廢了嗎?
原創不易,點個贊支持一下哇~

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390229.html
標籤:Python
上一篇:如何通過索引值從字典中洗掉專案?
