暴力破解rar和zip加密壓縮包

2021-10-07 02:27:26 字數 2700 閱讀 5023

最近老是遇到一些加密的壓縮包,還不給密碼……其中最過分的就是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...