Python實戰 暴力破解zip檔案解壓密碼

2021-08-25 16:54:46 字數 2881 閱讀 7318

首先測試檔案為test.txt(僅包含單行文字),壓縮後檔案為test.zip,壓縮密碼為2340,壓縮後刪除目錄下的txt檔案。。

上圖注意勾選傳統加密。

指的是不用0開頭的數字密碼,0開頭見後面的字母組合。原理就是zipfile模組解壓壓縮檔案時,一旦密碼不正確,程式會終止,在try語句只有成功解壓的密碼才會執行到extract函式呼叫後面的語句。

**:

import zipfile

import time

import threading

starttime = time.time()

# 判斷執行緒是否需要終止

flag = true

def extract(password, file):

try:

password = str(password)

file.extractall(path='.', pwd=password.encode('utf-8'))

print("the password is {}".format(password))

nowtime = time.time()

print("spend time is {}".format(nowtime-starttime))

global flag

# 成功解壓其餘執行緒終止

flag = false

except exception as e:

print(e)

def do_main():

zfile = zipfile.zipfile("test.zip", 'r')

# 開始嘗試

顯然,解壓成功,這裡提一下這種編碼 密碼的方式只適用於傳統zip加密,winrar有一種新式的預設加密方式,是不可以的。 

這裡情況密碼組合太多,為了防止記憶體溢位,改用迭代器。這種情況費時很久,可以閒來無事掛著指令碼。這裡再次壓縮檔案,密碼為python。

import zipfile

import random

import time

import sys

class myiterator():

# 單位字元集合

letters = 'abcdefghijklmnopqrstuvwxyz012345678'

min_digits = 0

max_digits = 0

def __init__(self, min_digits, max_digits):

# 例項化物件時給出密碼位數範圍,一般4到10位

if min_digits < max_digits:

self.min_digits = min_digits

self.max_digits = max_digits

else:

self.min_digits = max_digits

self.max_digits = min_digits

# 迭代器訪問定義

def __iter__(self):

return self

def __next__(self):

rst = str()

for item in range(0, random.randrange(self.min_digits, self.max_digits+1)):

rst += random.choice(myiterator.letters)

return rst

def extract():

start_time = time.time()

zfile = zipfile.zipfile("test.zip")

for p in myiterator(5, 6):

try:

zfile.extractall(path=".", pwd=str(p).encode('utf-8'))

print("the password is {}".format(p))

now_time = time.time()

print("spend time is {}".format(now_time-start_time))

sys.exit(0)

except exception as e:

pass

if __name__ == '__main__':

extract()

字元的序列組合很多,需要等待。

很多人反饋這個方法無效,這主要是因為檔案路徑不正確(我的**是預設該python指令碼所在目錄下的zip檔案進行解壓的)和加密方式並非傳統加密。這種暴力破解方法只在自己大致記得密碼位數和密碼格式(如只有字母等)時比較實用,完全的暴力破解是不現實的,畢竟做加密的也不是白做的。

Python暴力破解ZIP檔案密碼

通過python內建的zipfile模組實現對zip檔案的解壓,加點料完成口令破解 zipfile模組用來做zip格式編碼的壓縮和解壓縮的,zipfile裡有兩個非常重要的class,分別是zipfile和zipinfo,在絕大多數的情況下,我們只需要使用這兩個class就可以了。zipfile是主...

python暴力破解加密zip文件

由參加的乙個安全大賽來的。flag檔案在乙個加密的zip檔案裡面,金鑰為6 8位的數字。寫了個python指令碼進行暴力解壓縮。其中暴力破解的密碼生成採用itertools庫提供的函式來產生。即product函式,product函式為求迭代器的笛卡爾積。如下 list1 1,2,3 list2 a,...

暴力破解zip檔案密碼

lb2.config text 密碼 password flag true except exception as e pass def fn zippath,pwdpath zfile zipfile.zipfile zippath passfile open pwdpath n 0lines p...