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 檔案', '.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=[('文字檔案', '.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()