1.简介
在渗透测试中往往需要一个具有目标性的字典来对目标进行爆破,那么生成一个高精度字典是一个必要工具。
首先安装必要python模块,exrex
描述:正则表达式上的不规则方法。exrex是一个命令行工具和python模块,它生成与给定正则表达式等匹配的所有或随机字符串。它是纯Python,没有外部依赖关系。
2.步骤
(1)先对目标网站地址进行处理
(2)将网站重要信息与已有的密码母本相结合,生成密码本,以下为原代码
#encoding='utf-8'
import exrex,sys
#传入单个host,demo.webdic.com==>http://demo.webdic.com==>https://demo.webdic.com==>http://demo.webdic.com/==>那么demo,webdic可能作为字典的一部分
web_white = ['com','cn','gov','edu','org','www']
def host_para(host):
#对host进行分析,处理成我们想要的格式
if "://" in host :
host = host.split('://')[1].replace('/','')
if "/" in host:
host=host.replace('/','')
return host
def dic_creat(hosts):
web_dics = hosts.split('.')
#取出有用的东西,如demo,webdic,放入字典生成的地方,生成字典
#将核心的生成规则,写入配置文件,方便后期使用
f_rule = open('E:\\code\\python code\\python安全开发\\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('E:\code\python code\python安全开发\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:
if len(dic)>4:
f_pass_out =open('pass_1.txt','a+')
f_pass_out.write(dic+'\n')
f_pass_out.close()
print(dic)
#dic_creat(host_para('demo.webdic.com'))
if __name__=='__main__':
if len(sys.argv) ==2:
dic_creat(host_para(sys.argv[1]))
sys.exit()
else:
print ("Usage:%s www.demo.com"%sys.argv[0])
sys.exit(-1)
这是已有的密码母本rule.ini
#这是字典生成程序的配置文件
#配置的规则比如{web_dic}[!@#]{dic_pass}其中{web_dic}代表host中可能的字典元素,{dic_pass}代表密码母本中的密码
(|{web_dic})([!|@|#])(|{dic_pass})