压缩包密码破解器

压缩包密码破解器_第1张图片

 可以自定义密码进行破解,也就是说你的字典足够大,密码一定是可以被破解的,16G密码本和密码生成器私信发送哦!

按惯例,上代码

1、导入对应模块

2、 画界面

 

压缩包密码破解器_第2张图片

 3、逻辑代码

压缩包密码破解器_第3张图片

 

压缩包密码破解器_第4张图片

 附完整代码

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()

 

你可能感兴趣的:(python小程序,网络小工具,python,开发语言,pycharm)