可以自定义密码进行破解,也就是说你的字典足够大,密码一定是可以被破解的,16G密码本和密码生成器私信发送哦!
按惯例,上代码
1、导入对应模块
2、 画界面
3、逻辑代码
附完整代码
import os
import tkinter
import zipfile
# 创建一个主窗口
root = tkinter.Tk()
root.title('压缩包破解器')
root.geometry('640x480')
# 加载zip文件
def load_file():
fname = tkinter.filedialog.askopenfilename()
if fname:
entry_name.delete(0, tkinter.END)
entry_name.insert(0, fname)
# 设置字典
def set_dictionary():
fname = tkinter.filedialog.askopenfilename()
if fname:
entry_dictionary.delete(0, tkinter.END)
entry_dictionary.insert(0, fname)
# 破解zip文件
def crack():
fname = entry_name.get()
if not os.path.isfile(fname):
tkinter.messagebox.showerror('错误', '请选择一个zip文件!')
return
dictionary = entry_dictionary.get()
if not os.path.isfile(dictionary):
tkinter.messagebox.showerror('错误', '请选择一个字典文件!')
return
password = None
with open(dictionary, 'r') as fp:
for line in fp.readlines():
password = line.strip('\n')
try:
zf = zipfile.ZipFile(fname)
zf.extractall(path='.', pwd=password.encode())
tkinter.messagebox.showinfo('成功', '破解成功,密码是:%s' % password)
break
except:
pass
if not password:
tkinter.messagebox.showerror('失败', '字典中没有正确的密码!')
# 布局
frame_name = tkinter.Frame(root)
frame_name.pack(fill=tkinter.X, padx=10, pady=10)
lbl_name = tkinter.Label(frame_name, text='压缩包:')
lbl_name.pack(side=tkinter.LEFT, padx=10, pady=10)
entry_name = tkinter.Entry(frame_name, width=50)
entry_name.pack(fill=tkinter.X, padx=10, pady=10)
btn_name = tkinter.Button(frame_name, text='选择', command=load_file)
btn_name.pack(side=tkinter.RIGHT, padx=10, pady=10)
frame_dictionary = tkinter.Frame(root)
frame_dictionary.pack(fill=tkinter.X, padx=10, pady=10)
lbl_dictionary = tkinter.Label(frame_dictionary, text='字典:')
lbl_dictionary.pack(side=tkinter.LEFT, padx=10, pady=10)
entry_dictionary = tkinter.Entry(frame_dictionary, width=50)
entry_dictionary.pack(fill=tkinter.X, padx=10, pady=10)
btn_dictionary = tkinter.Button(frame_dictionary, text='选择', command=set_dictionary)
btn_dictionary.pack(side=tkinter.RIGHT, padx=10, pady=10)
btn_crack = tkinter.Button(root, text='破解', command=crack)
btn_crack.pack(fill=tkinter.X, padx=10, pady=10)
# 进入消息循环
tkinter.mainloop()