最近在研究暴力破解压缩包、PDF文件的问题,看到其他文章好多都是通过建立密码池,遍历读取密码进行匹配,但是他们提到了写入一些常用的数字字母在txt文件里里面,我就纳闷为什么不把所有的数字、字母、符号组合都塞到一个文件里呢?于是想尝试一下。
不过首先尝试了数字0~9,位数分别是1 ~ 8位,结果产生了一个1G的txt文件,写入时间花了110秒,试了一下读取22秒,OMG!这要是把大小写字母加各种符号加进去,那还不爆炸了!失败失败!
所以还是直接通过CPU运算遍历数据比较靠谱,还在研究,等完成了发上来做个记录
import itertools
import time
'''
经测试,数字0~9,组合成1~8位的密码
产生txt文件容量1GB,
写入用时110秒,
读取用时22秒
效率极其低下
创建密码池的方法不太可取
'''
#写入密码池
st_w=time.time()
with open('pw_pool.txt','w+') as f:
for rpt in range(1,9):
pw_list1=itertools.product('0123456789',repeat=rpt)
for i in pw_list1:
i=''.join(i)
f.write(i+'\n')
et_w=time.time()
print('write time use:',et_w-st_w)
#读取密码池 readline()单行逐行读取
st_r=time.time()
with open('pw_pool.txt','r') as f:
while f.readline():
f.readline()
et_r=time.time()
print('read time use:',et_r-st_r)