先是用python写了一个,原理网上都有,我加了个界面,方便使用,同目录下放个pwd.txt,里面是密码列表,可以网上下载一些,或自己生成一个。
import zipfile
from threading import Thread
from tkinter import *
from tkinter import filedialog
from tkinter import ttk
def extractfile(zFile,password):
# noinspection PyBroadException
try:
global flag
zFile.extractall(pwd=password.encode("utf=8"))
print("password="+password)
lb2.config(text="密码:"+password)
flag=True
except Exception as e:
pass
def fn(zipPath,pwdPath):
zFile = zipfile.ZipFile(zipPath)
passFile = open(pwdPath)
n=0
lines=passFile.readlines()
passFile.close()
num=len(lines)
print(num)
for line in lines:
password = line.strip('\n')
t = Thread(target=extractfile(zFile , password))
t.start()
n+=1
if(n%1000==0):
pb.config(value=n*100/num)
window.update()
if(flag):
pb.config(value=100)
break
zFile.close()
if(not(flag)):
pb.config(value=100)
lb2.config(text="密码未找到")
def selectZIP():
global myfilepath
global flag
flag=False
myfilepath=filedialog.askopenfilename()
if len(myfilepath)>0:
lb.config(text=myfilepath)
lb2.config(text="密码:")
def getPwd():
global myfilepath
fn(myfilepath,"pwd.txt")
global myfilepath
global flag
flag=False
global mynum
mynum=0
window=Tk()
window.title('hackZip')
window.geometry('300x200')
window.resizable(0, 0)
btn1=Button(window,text="选择zip",command=selectZIP)
btn1.place(x=200,y=30)
btn1=Button(window,text="暴力破解",command=getPwd)
btn1.place(x=200,y=60)
lb=Label(window,text='..')
lb.place(x=20,y=10)
lb2=Label(window,text='密码:')
lb2.place(x=20,y=100)
pb = ttk.Progressbar(window, length = 280, value=0, mode = "determinate")
pb.place(x=10,y=130)
window.mainloop()
这样就是在密码本里一个个密码试,知道找到正确密码为之。
想着用显卡来加速,找到了一个hashcat的软件,不怎么会用,有一些问题。
后来找到个johntheripper,同样也能破解zip
https://www.openwall.com/john/
下载下来
进cmd,进入文件夹run下面, 如要破解的是d:\test1.zip文件,同过命令 zip2john d:\test1.zip >hash 得到一个叫hash的文件
下面破解,输入john hash
用了9秒
破解出来密码是11223344
同时也支持用自己的密码本破解
命令如 john -w=d:\pwd.txt hash
已经破解过的可以通过 john --show hash 显示密码