目录
-
乱码问题
-
单线程纯数字爆破
-
单线程数字字母爆破
-
多线程爆破密码本
-
单线程爆破3合1版(支持数字,数字+字母、密码本)
使用的是单线程,多线程会出现各种奇奇怪怪的问题,以后有时间再优化
乱码问题
破解压缩包时候会存在中文乱码问题!
1:直接使用Everything搜索出要修改的库文件 zipfile.py
,并用notepad++打开
2:修改的第一段代码
大概位置在1374行
if flags & 0x800:
# UTF-8 file names extension
filename = filename.decode('utf-8')
else:
# Historical ZIP filename encoding
filename = filename.decode('gbk') # 把cp437修改为gbk
3:修改的第2段代码
大概在1553行
这里也是与解决办法2的链接中不一致的地方。if语句的内容不一样,可能是zipfile
升级的缘故
if fheader[_FH_GENERAL_PURPOSE_FLAG_BITS] & 0x800:
# UTF-8 filename
fname_str = fname.decode("utf-8")
else:
fname_str = fname.decode("gbk") # 把原来的cp437更改为gbk
4:保存退出即可
单线程纯数字爆破
需要指定一下第6行(压缩包的位置),第20行(密码区间)
import zipfile
import os
import time
import sys
os.chdir(r'C:\Users\asuka\Desktop\123')
start_time = time.time()
# 获取zip文件
def get_zipfile():
files = os.listdir()
for file in files:
if file.endswith('.zip'):
return file
# 用来提取zip文件
def extract():
file = get_zipfile()
zfile = zipfile.ZipFile(file) # 读取压缩文件
for num in range(1, 1000000): # 设置数字密码区间
try:
pwd = str(num)
zfile.extractall(path='.', pwd=pwd.encode('utf-8'))
print('解压密码是:', pwd)
end_time = time.time()
print('单线程破解压缩包花了%s秒' % (end_time - start_time))
sys.exit(0) # 让程序在得到结果后,就停止运行,正常退出
except Exception as e:
pass
if __name__ == "__main__":
extract()
单线程数字字母爆破
脚本默认工作在脚本所在的路径,如需更改,请手动修改第49
import zipfile
import time
import sys
import random
import os
class MyIter(object):
word = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" # 原始的密码本
def __init__(self, min_len, max_len): # 迭代器实现初始方法,传入参数
# 下面的if-else是为了解决extract函数中,for循环中传递的密码长度可能前者的值大于后者,这一bug
if min_len < max_len: