import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
import zipfile
import rarfile
def extract_zip(zip_file_path, password_dict_path):
zip_file = zipfile.ZipFile(zip_file_path)
with open(password_dict_path, 'r') as f:
passwords = f.readlines()
for password in passwords:
password = password.strip()
try:
zip_file.extractall(pwd=bytes(password, 'utf-8'))
messagebox.showinfo('破解成功', f'破解成功,密码为:{password}')
with open('密码.txt', 'w') as f:
f.write(f'文件名:{zip_file_path}\n密码:{password}')
break
except zipfile.BadZipFile:
lbl_result.config(text=f'文件格式错误,无法解压缩:{zip_file_path}')
break
except RuntimeError:
lbl_result.config(text=f'破解失败,尝试密码:{password}')
else:
lbl_result.config(text='破解失败,未找到正确的密码')
zip_file.close()
def extract_rar(rar_file_path, password_dict_path):
rar_file = rarfile.RarFile(rar_file_path)
with open(password_dict_path, 'r') as f:
passwords = f.readlines()
for password in passwords:
password = password.strip()
try:
rar_file.extractall(pwd=bytes(password, 'utf-8'))
messagebox.showinfo('破解成功', f'破解成功,密码为:{password}')
with open('密码.txt', 'w') as f:
f.write(f'文件名:{rar_file_path}\n密码:{password}')
break
except rarfile.BadRarFile:
lbl_result.config(text=f'文件格式错误,无法解压缩:{rar_file_path}')
break
except RuntimeError:
lbl_result.config(text=f'破解失败,尝试密码:{password}')
else:
lbl_result.config(text='破解失败,未找到正确的密码')
rar_file.close()
def browse_zip_file():
zip_file_path = filedialog.askopenfilename(filetypes=[('Zip Files', '.zip')])
entry_zip_file.delete(0, tk.END)
entry_zip_file.insert(tk.END, zip_file_path)
def browse_password_dict():
password_dict_path = filedialog.askopenfilename(filetypes=[('Text Files', '.txt')])
entry_password_dict.delete(0, tk.END)
entry_password_dict.insert(tk.END, password_dict_path)
def crack_zip():
zip_file_path = entry_zip_file.get()
password_dict_path = entry_password_dict.get()
if zip_file_path.endswith('.zip'):
extract_zip(zip_file_path, password_dict_path)
else:
lbl_result.config(text='不支持的文件格式')
def crack_rar():
rar_file_path = entry_zip_file.get()
password_dict_path = entry_password_dict.get()
if rar_file_path.endswith('.rar'):
extract_rar(rar_file_path, password_dict_path)
else:
lbl_result.config(text='不支持的文件格式')
root = tk.Tk()
root.title("压缩文件密码破解-微信公众号:蓝胖子之家")
root.geometry("400x200")
lbl_zip_file = tk.Label(root, text="压缩文件路径:")
lbl_zip_file.pack()
entry_zip_file = tk.Entry(root)
entry_zip_file.pack()
btn_browse_zip_file= tk.Button(root, text="浏览", command=browse_zip_file)
btn_browse_zip_file.pack()
lbl_password_dict = tk.Label(root, text="密码字典路径:")
lbl_password_dict.pack()
entry_password_dict = tk.Entry(root)
entry_password_dict.pack()
btn_browse_password_dict = tk.Button(root, text="浏览", command=browse_password_dict)
btn_browse_password_dict.pack()
btn_crack_zip = tk.Button(root, text="破解Zip文件", command=crack_zip)
btn_crack_zip.pack()
btn_crack_rar = tk.Button(root, text="破解Rar文件", command=crack_rar)
btn_crack_rar.pack()
lbl_result = tk.Label(root, text="")
lbl_result.pack()
root.mainloop()