Python實用案例,Python腳本,Python實現破譯zip壓縮包
前言
今天我們就利用python腳本實現破譯zip壓縮包。直接開整~
如果有正在跟我一樣的自學的朋友,需要我本篇的代碼或者其他的Python學習資料可以加衛星小助手:ilove-python直接獲取
效果展示
過程如下:
建立密碼字典(常用密碼)
嘗試用每一個密碼,來解壓文件
解壓成功,跳出循環
密碼字典
比如,現在一個純數字的六位密碼“050825”
可以從依次遍歷“000000”到“999999”,把所有的結果保存到txt文件。
這樣的缺點就是比較死板,只能是6位數字,另外就是比較占內存。
于是,有個大神寫了個“字典生成器”,你需要做的是傳入兩個參數“字典的組成元素”和“密碼的長度列表”
比如,純數字的“050825”,你就傳入如下的參數:
[0,1,2,3,4,5,6,7,8,9],數字就這9個
[6],密碼的長度
如此,便可按你的要求得到密碼的Python 生成器。我們知道,生成器是不占用內存的。
如果數字不過癮,比如有的密碼是字符串。可以考慮在第一個參數中,加入“a-z”和“A-Z”
zipfile解壓文件
zipfile模塊是python自帶的,用于對zip文件的讀、寫、追加、解壓操作等。
“解壓”主要是用到ZipFile對象的extractall()方法
extractall(path=None, members=None, pwd=None)方法主要有三個參數。
我們來看一下每個參數的含義:
path 指定解壓后文件的存儲位置
members(可選)指定Zip文件中要解壓的文件,這個文件名稱必須是通過namelist()方法返回列表的子集
pwd 指定Zip文件的解壓密碼(編碼“utf-8”)
源碼:
import zipfile
try: with zipfile.ZipFile('test.zip') as zFile:
# 創建ZipFile對象
# 解壓文件
zFile.extractall(path='./',pwd=b'1234') print('解壓成功!')except: print('解壓失敗')
進度條可視化
上次的進度條,這次派上用場了,關于進度條,本程序使用 tqdm擴展庫,可以參考下面的鏈接:用python 制作可視化進度條
代碼中的tqdm有兩個參數:
1、密碼迭代器
2、密碼總個數
for pwd in tqdm(chain.from_iterable(all_passwd(dictionaries, maxlen) for maxlen in lengths), total=total): if extract(zfile, pwd): # 記得extract函數返回的是bool類型的哦 break
這是破解的結果:
5%|▌ | 50691/1000000 [00:04<01:23, 11389.24it/s] Password is: 050825 bingo
4s結束戰斗...
文章到這里就結束了,感謝你的觀看,Python實用腳本系列,下篇文章分享批量下載百度圖片
為了感謝讀者們,我想把我最近收藏的一些編程干貨分享給大家,回饋每一個讀者,希望能幫到你們。
干貨主要有:
① 2000多本Python電子書(主流和經典的書籍應該都有了)
② Python標準庫資料(最全中文版)
③ 項目源碼(四五十個有趣且經典的練手項目及源碼)
④ Python基礎入門、爬蟲、web開發、大數據分析方面的視頻(適合小白學習)
⑤ Python學習路線圖(告別不入流的學習)
⑥ 兩天的Python爬蟲訓練營直播權限
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















