zip压缩文件密码暴力破解脚本
家电修理 2023-07-16 19:17www.caominkang.com电器维修
zip密码暴力破解脚本
昨天了解到python的zipfile库,想到可以写一个暴力破解压缩密码的脚本
P.s 顺带练习markdon语法: )
主要使用zipfile库,实现多线程的暴力破解是usage提示
def usage(): print('') print('Crack the zip file, use args: -f :zip file name, -d dic name') print('e.g. zip_crack.exe -f 1.zip -d dic.txt') print('')-f 指定破解的zip文件
-d 指定使用的字典文件
获取参数并解析
file_name = '' dic_name = '' try: opts,args = get.get(sys.argv[1:],'f:d:') for a,b in opts: if a == '-f': file_name = b if a == '-d': dic_name = b crack_dic = open(dic_name,'r') except: usage() sys.exit()
使用字典进行破解
try:
file_gue.extractall(pd = i.strip('n').encode('utf-8')) print('[]Suessfully crack, passd is '+i) breakexcept:
pass完整版代码
import zipfileimport getimport sysimport threading
def usage(): print('') print('Crack the zip file, use args: -f :zip file name, -d dic name') print('e.g. zip_crack.exe -f 1.zip -d dic.txt') print('')
def crack(file_name,crack_dic,file_gue):
kv = crack_dic.readlines()
end_num = kv[-1] for i in kv:
print('[+]try passd:'+i)
if i.strip('n') == end_num.strip('n'):
try:
file_gue.extractall(pd = i.strip('n').encode('utf-8')) print('[]Suessfully crack, passd is '+i)
break
except: print('[]Crack fail, please change your dic')
sys.exit() try:
file_gue.extractall(pd = i.strip('n').encode('utf-8')) print('[]Suessfully crack, passd is '+i) break
except:
pass
crack_dic.close()
def main():
file_name = ''
dic_name = ''
try:
opts,args = get.get(sys.argv[1:],'f:d:') for a,b in opts: if a == '-f':
file_name = b if a == '-d':
dic_name = b
crack_dic = open(dic_name,'r')
except:
usage()
sys.exit()
file_gue = zipfile.ZipFile(file_name)
t = threading.Thread(target = crack(file_name,crack_dic,file_gue))
t.start()
main()代码的github地址
github
P.s
此处有个文件操作的坑,此处代码
kv = crack_dic.readlines() end_num = kv[-1]for i in kv:
如果替换成两次对crack_dic进行readlines()操作,则第二次读取的将会是0字节文件,且解释器不会报错。
end_num =crack_dic.readlines()[-1]for i in crack_dic.readlines():
考虑到压缩密码大多是四位以下,就顺手写了个密码生成脚本,包含1-4位的英文数字字符密码
import string
num = []for i in string.uppercase+string.loercase:
num.append(i)for i in range(0,10):
num.append(str(i))print(num)
fh = open('dic_eak.txt','')for i in num:
fh.rite(i+'n')for i in num: for j in num:
fh.rite(i+j+'n')for i in num: for j in num: for k in num:
fh.rite(i+j+k+'n')for i in num: for j in num: for k in num: for l in num:
fh.rite(i+j+k+l+'n')
fh.close()生成的密码字典有80M左右,共1500万行
end
作者Eddie_Ivan
链接https://.jianshu./p/65175cedbb
來源简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
空调维修
- 我的世界电脑版运行身份怎么弄出来(我的世界
- 空调抽湿是什么意思,设置抽湿的温度有什么意
- 方太燃气灶有一个打不着火 怎么修复与排查方法
- 夏季免费清洗汽车空调的宣传口号
- 清洗完空调后出现漏水现象
- iphone6能玩什么游戏(iphone6游戏)
- 如何设置电脑密码锁屏(如何设置电脑密码锁屏
- win10删除开机密码提示不符合密码策略要求
- 电脑w7显示不是正版(w7不是正版怎么解决)
- 万家乐z8热水器显示e7解决 怎么修复与排查方法
- 1匹空调多少瓦数(1匹空调多少瓦)
- 安卓手机连接电脑用什么软件好(关于安卓手机
- 电脑网页看视频卡是什么原因(爱拍看视频卡)
- 华帝燃气灶点火器一直响然后熄火怎么办:问题
- 电脑壁纸怎么换(关于电脑壁纸怎么换的介绍)
- 冬天空调的出风口应该朝什么方向(冬天空调风