作者名:Demo不是emo
主页面链接:主页传送门
创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构每日emo:突然感觉也没什么好emo的了,仿佛时间已经将她洗刷
经过了上一章内容,我们对Python的背景,语法,函数,迭代器等问题进行了一个了解,也带大家认识了一下编写Python脚本工具需要用到的一些东西,那这一期我们就来编写一个简单的zip加密文件密码破解器,后续也会对其进行优化。代码如下
# coding=UTF-8
"""
用字典暴力破解ZIP压缩文件密码
"""
import zipfile
import threading
# 定义一个判断密码是否正确的函数
def extractFile(zFile, password):
try:
zFile.extractall(pwd=password.encode())
print("Found Passwd : ", password)
return password
except Exception:
# 异常处理
pass
def main():
# 指定要爆破的压缩文件
zFile = zipfile.ZipFile(input("请输入你要爆破的压缩文件,例:C:\\a.zip\n"))
# 指定要使用的字典文件
dictfile = input("请输入要使用的字典文件,输入0则使用默认字典\n")
if dictfile == '0':
dictfile = "pwd.txt"
passFile = open(dictfile)
for line in passFile.readlines(): # 逐行读取字典文件
password = line.strip('\n') # 删除多余的换行
t = threading.Thread(target=extractFile, args=(zFile, password)) # 创建线程
t.start() # 开启线程
guess = extractFile(zFile, password) # 尝试每一行读取的密码
if guess: # 成功读取
print('Password = ', password)
return
else:
continue
print("password not found")
if __name__ == '__main__':
main()
效果演示
我们先来模拟一下环境,创建一个flag.txt,把他压缩成zip文件并设置压缩密码,如下
可以看到打开时已经提示需要密码
好,我们运行这个文件如下
成功爆破出正确密码
请输入你要爆破的压缩文件,例:C:\a.zip
flag.zip
请输入要使用的字典文件,输入0则使用默认字典
0
Found Passwd : 123456
Found Passwd : 123456
Password = 123456
这个代码拿去就可以用,同时也在我的github上更新了,里面还附带有我自己的默认密码字典和使用说明,链接如下:
Grandejoy/ZIPbrute (github.com)
后续该工具会不断更新,希望持续关注