最近老是遇到一些加密的壓縮包,還不給密碼……其中最過分的就是adobe audition cc貼吧吧主分享盜版軟體壓縮版,還搞收費,交錢才能知道解壓密碼,這操作真是秀到我了……
話不多說,直接開始嘗試暴力破解
###
# winrar 加密: 原始檔壓縮成資料段;將資料段加密
# 對於同乙個原始檔而言,不加密,只壓縮獲取的資料段是一樣的;
# 但加密時,就算密碼一致加密完rar檔案的資料段是不一樣的,這是由於加密的金鑰依賴於乙個salt(8位元組的金鑰,用來加密時使用,存放在rar檔案頭中)
# 加密流程: 將明文密碼與salt一起,通過hash演算法,生成兩個16位元組的金鑰(aes引數和initvector) 迴圈加密
# 解密流程: 將解密後的資料塊進行解壓縮,然後解壓成原始檔,對該檔案進行crc校驗,存在rar檔案中的原始檔crc校驗碼比較,相同則密碼正確,不相同則密碼錯誤
import threading
from unrar import rarfile
import zipfile
import os
import itertools
import sys
import time
import argparse
parser = argparse.argumentparser()
parser.add_argument("file")
parser.add_argument("extract")
def decode_rar(rar_file, pwd, extract_path):
try:
rar_file.extractall(extract_path, pwd = pwd)
except:
#print('wrong')
pass
else:
print('password is', pwd)
sys.exit(0)
def decode_zip(zip_file, pwd, extract_path):
try:
zip_file.extractall(extract_path, pwd=pwd)
except:
#print('wrong')
pass
else:
print('password is', pwd)
sys.exit(0)
def create_pwd(words, repeatnum):
dict = itertools.product(words, repeat = repeatnum)
with open('./password.txt', 'w') as f:
for it in dict:
f.write(''.join(it) + '\n')
def get_pwd():
with open('./password.txt','r') as f:
for pwd in f:
yield pwd.strip()
def main(file, extract_path):
# 建立密碼
if not (os.path.exists('./password.txt')):
create_pwd('./password.txt')
pwds = get_pwd()
suffix = os.path.splitext(file)[1][1:]
if suffix == 'zip':
zip_file = zipfile.zipfile(file, 'r')
for pwd in pwds:
t = threading.thread(target=decode_zip, kwargs=)
t.start()
elif suffix == 'rar':
rar_file = rarfile.rarfile(file)
for pwd in pwds:
t = threading.thread(target=decode_rar, kwargs=)
t.start()
else:
print("暫不支援該格式")
if __name__ == '__main__':
args = parser.parse_args()
start_time = time.time()
#密碼建立 預設為4位純數字
create_pwd('1234567890', 4)
print('create password time: %fs' % (time.time() - start_time))
main(args.file, args.extract)
print('run time: %fs' % (time.time() - start_time))
python myunrar.py 壓縮檔案路徑 解壓路徑
另外,密碼需要自己改。
改create_pwd(『1234567890』, 4)就好了, 第乙個引數為密碼的字元構成,第二個引數為密碼位數,這是做排列組合的,因此字元構成中不需要出現重複字元。
遇到加密者用中文加密,或者位數很長的密碼,著實難以破解,畢竟現在只能通過遍歷密碼嘗試暴力破解。
或許了解了加密原理,可以找到巧妙的破解方法,降低時間複雜度o(n)
暴力破解zip加密壓縮包
最近恰好有個壓縮包要解密,所以稍微研究了一下該怎麼去破解加密的壓縮包 zip,rar在道理上是一樣的 由於現有的方法中沒想到高階的破解方式,所以只有暴力破解壓縮包了。暴力破解壓縮包的原理很簡單,就是先製作乙個密碼字典,這個字典是暴力破解的核心,首先就來講講如何製作這樣乙個密碼字典,對於乙個加密壓縮包...
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...