Python實用案例,Python腳本,Python實現破譯zip壓縮包

前言

今天我們就利用python腳本實現破譯zip壓縮包。直接開整~

如果有正在跟我一樣的自學的朋友,需要我本篇的代碼或者其他的Python學習資料可以加衛星小助手:ilove-python直接獲取

效果展示

Python實用案例,Python腳本,Python實現破譯zip壓縮包的圖1

過程如下:

  1. 建立密碼字典(常用密碼)

  2. 嘗試用每一個密碼,來解壓文件

  3. 解壓成功,跳出循環

密碼字典

比如,現在一個純數字的六位密碼“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實用案例,Python腳本,Python實現破譯zip壓縮包的圖2

文章到這里就結束了,感謝你的觀看,Python實用腳本系列,下篇文章分享批量下載百度圖片

為了感謝讀者們,我想把我最近收藏的一些編程干貨分享給大家,回饋每一個讀者,希望能幫到你們。

干貨主要有:

① 2000多本Python電子書(主流和經典的書籍應該都有了)

② Python標準庫資料(最全中文版)

③ 項目源碼(四五十個有趣且經典的練手項目及源碼)

④ Python基礎入門、爬蟲、web開發、大數據分析方面的視頻(適合小白學習)

⑤ Python學習路線圖(告別不入流的學習)

⑥ 兩天的Python爬蟲訓練營直播權限

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP