0x08字典生成程序
这里主要用到了exrex模块,这个模块的主要功能是:
这里主要用到了这个模块的generate方法
generate(s,limit = 20)
这里给两个个使用例子
例子一
结果
例子二
结果
实现思路:
根据web网站的url生成响应的密码字典文件,主要是通过规则进行匹配生成,大致思路为输入一个Web站点的URL,然后根据白名单过滤提取出该URL的中间部分,然后结合密码字典文件和时间等内容进行组合来生成字典
最后生成的密码字典会储存在pass_1.txt文件中
工具源码:
#!/usr/bin/python
#-*-coding:utf-8-*-
import exrex
import sys
'''
传入一个host,demo.webdic.com
那么deme,webdic都可能作为字典的一部分
'''
#白名单过滤掉url中的这些字串
web_white=['com','cn','gov','edu','org','www']
def host_para(host):
#对host进行分析,处理成我们想要的格式
#去掉http://和输入的url中的/
if '://' in host:
host=host.split('://')[1].replace('/','')
if '/' in host:
host=host.replace('/','')
return host
'''
#dics=list(exrex.generate(web_dic+'[!@#]'+dic_pass))
#为了将核心规则写入配置文件,
实现可以实时修改规则,使用以下定义方法
#dics=list(exrex.generate
('{web_dic}[!@#]{dic_pass}'.
format(web_dic=web_dic,dic_pass=dic_pass)))
'''
def dic_creat(hosts):
web_dics=hosts.split('.')
#取出有用的东西,如demo,webdic,
#放入字典生成的地方,生成字典
f_rule=open('rule.ini','r')
#逐行读取文本
#直到遇到的不是#开头的就当做是规则处理
for i in f_rule:
if '#' !=i[0]:
rule=i
#创建储存生成的密码字典的文件
f_pass_out=open('pass_1.txt','w')
f_pass_out.close()
#生成字典
for web_dic in web_dics:
#白名单过滤
if web_dic not in web_white:
f_pass=open('pass_0.txt','r')
for dic_pass in f_pass:
dics=list(exrex.generate(rule.format(web_dic=web_dic,dic_pass=dic_pass.strip('\n'))))
for dic in dics:
#只取长度大于4的密码
if len(dic) >4:
f_pass_out=open('pass_1.txt','a+')
f_pass_out.write(dic+'\n')
f_pass_out.close()
print dic
if __name__ == '__main__':
if len(sys.argv)==2:
dic_creat(host_para(sys.argv[1]))
sys.exit(0)
else:
print 'Usage:%s www.demo.com'%sys.argv[0]
sys.exit(-1)