首先測試檔案為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...