首页 > 技术文章 > python安全编程-字典生成器

lzlzzzzzz 2020-09-30 20:07 原文

在渗透测试中,我们有时候会碰到拿到后台登录界面,而且没有其他漏洞可以利用,只能暴力破解用户名密码,现在直接使用弱口令的网站较少了,常见的字典一般是无法爆破成功,所以我们要针对网站内容来生成对应字典,进一步提升爆破成功率。

所以我们来写个小脚本来生成对应的字典

import exrex
import sys

web_white = ['com','cn','gov','www','edu','org']

def host_para(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('ruler.ini','r',encoding='UTF-8')
    for i in f_rule:
        if '#' in  i[0]:
            rule = i
    f_pass_out = open('pass_0.txt','r')
    f_pass_out.close()
    for web_dic in web_dics:
        if web_dic not in web_white:
            f_pass =open('123.txt','r')#打开密码文件
            for dic_pass in f_pass:
                dics = list(exrex.generate( '{web_dic}[!@#]{dic_pass}'.format(web_dic = web_dic,dic_pass = dic_pass)))

                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.123.com'))
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)

我们主要使用了exrex模块来生成字典,将所有可能都列举到字典中,首先先做一个根据网站域名来生成对应字典,并和常见的弱口令结合来生成对应的字典。

将域名中提取出来的内容进行过滤,将符号等无用的东西去掉,并将核心的生成规则写入配置文件,便于修改,后续再加入扩展功能。

推荐阅读