首頁 > 軟體

​​​​​​​如何利用python破解zip加密檔案

2022-05-22 13:00:29

前言:

日常工作中,會遇到一些加密的zip檔案,但是因為某些原因或者時間過長,密碼不知道了。但是zip檔案中檔案有很重要很必須。那麼,我們試一試萬能的Python,暴力破解密碼。

一、破解zip加密檔案的思路

  • 準備一個加密的zip檔案。
  • zipfile模組可以解壓zip檔案。

解壓時可以提供密碼zfile.extractall("./", pwd=password.encode("utf8"))

  • itertools.permutations實現全字元的全排列。

通過函數itertools.permutations("abc", 3)實現全字元的全排列:abc/acb/bca/bac/cab/cba

二、範例程式碼演示

0、zip的壓縮方式

本文介紹的zip檔案知道密碼一共是4位元的,密碼字元的範圍是a-z1-0。並且不存在重複字元的,不會有“aabb”的密碼。zip壓縮時是選擇了zip傳統加密!

1、解壓zip檔案

匯入zipfile模組,使用其中的extractall()函數。

import itertools
filename = "readme.zip"
# 建立一個解壓的函數,入參為檔名和密碼
# 並使用try-except,避免報錯中斷程式。
def uncompress(file_name, pass_word):
    try:
        with zipfile.ZipFile(file_name) as z_file:
            z_file.extractall("./", pwd=pass_word.encode("utf-8"))
        return True
    except:
        return False

2、實現密碼字元的全排列

import zipfile
import itertools
filename = "readme.zip"
# 建立一個解壓的函數,入參為檔名和密碼
# 並使用try-except,避免報錯中斷程式。
def uncompress(file_name, pass_word):
    try:
        with zipfile.ZipFile(file_name) as z_file:
            z_file.extractall("./", pwd=pass_word.encode("utf-8"))
        return True
    except:
        return False
# chars是密碼可能的字元集
chars = "abcdefghijklmnopqrstuvwxyz0123456789"
for c in itertools.permutations(chars, 4):
    password = ''.join(c)
    print(password)
    result = uncompress(filename, password)
    if not result:
        print('解壓失敗。', password)
    else:
        print('解壓成功。', password)
        break

檔案壓縮時,一些注意的事項: 

三、密碼是幾位未知,也可以破解密碼

查過一些資料,zip壓縮檔案密碼最長為12位元,在原來的程式上增加上一個for迴圈就可以實現破解密碼了。

import zipfile
import itertools
filename = "readme.zip"
def uncompress(file_name, pass_word):
    try:
        with zipfile.ZipFile(file_name) as z_file:
            z_file.extractall("./", pwd=pass_word.encode("utf-8"))
        return True
    except:
        return False
chars = "abcdefghijklmnopqrstuvwxyz0123456789"
for i in range(12):
    for c in itertools.permutations(chars, i):
        password = ''.join(c)
        print(password)
        result = uncompress(filename, password)
        if not result:
            print('解壓失敗。', password)
        else:
            print('解壓成功。', password)
            break

總結

此方法可以是實現破解zip檔案的密碼,python可以完成一些好玩的事情。

到此這篇關於如何利用python破解zip加密檔案的文章就介紹到這了,更多相關python破解加密檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com