ADO 老师介绍的一个模块:exrex,感觉挺好用的
安装:pip install exrex
项目地址:https://github.com/asciimoo/exrex
常见用法:
dic01.PNG (29.99 KB, 下载次数: 61)
2017-5-6 11:06 上传
exrex.generate()函数里写入的是正则,然后exrex会生成所有符合该正则的字符串,我们就利用这个特性,传入一个与常见弱口令、字符、以及与url相关的字符有关联的正则,然后自动生成大量字典。
核心代码dic_generate.py
[Python] 纯文本查看 复制代码'''
@author: xiaoye
'''
#coding: utf-8
import exrex
'''a = list(exrex.generate('[Pp][a@]ssw[Oo]rd'))
print a'''
dic_bad = ['com', 'www', 'bbs', 'cn', '/', 'org', 'edu', 'xyz', 'top']
filter_list = ['!', '@', '#', '201']
dic_final = []
def url_split(url=''):
if '://' in url:
domain = url.split('://')[1]
else:
domain = url
#print domain
if '/' in domain:
domain = domain.split('/')[0]
#print domain
url_dics = domain.split('.')
#print url_diclist
return url_dics
def dic_create(url_dics):
with open('D:\\django_test\\webtool\\tool\\dic_rule.ini', 'r') as f:
for i in f.readlines():
i = i.strip('\n')
if i[0] != '#':
rule = str(i)
with open('D:\\django_test\\webtool\\tool\\comm_dic.txt', 'r') as f:
comm_dics = f.readlines()
dic_final = []
for url_dic in url_dics:
if url_dic not in dic_bad:
for comm_dic in comm_dics:
dics = list(exrex.generate(rule.format(url_dic=url_dic, comm_dic=comm_dic.strip('\n'))))
for dic in dics:
if (len(dic) > 4) and (dic[0] not in filter_list):
dic_final.append(dic)
#print dic_final
fin = '.'.join(url_dics)
dic_final.append(fin)
return dic_final
#dic_create(url_split())
整体思路是ADO老师的,自己又增加了一些过滤条件,把生成的一些过于简单的口令删去了;
规则写入了一个配置文件dic_rule.ini:
[Python] 纯文本查看 复制代码#example:{url_dic}[!@#]{comm_dic}
#{url_dic}[@#]{comm_dic}
#{url_dic}[#]{comm_dic}
(|{url_dic})(|@|#|!)(|{comm_dic})(|201[4567])
#(|{url_dic})(|@|#|!|!@#)(|{comm_dic})(|201[4567])
可以自增多条规则,将不用的注释掉
然后我们要将它当作模块使用
二、Django集成前篇文章已经写了一些基础,这里不多赘述
首先肯定是在urls.py中增加一个url正则:
[Python] 纯文本查看 复制代码from django.conf.urls import url
from django.contrib import admin
from tool import views as tool_views
urlpatterns = [
url(r'^admin/', admin.site.urls),
#url(r'^tool1/$', tool_views.tool1),
url(r'^tool/ip/$', tool_views.ip_api),
url(r'^tool/dict/$', tool_views.dic),
]
tool/dict/就是我们的增加项,tool_views.dic就是对应于url的视图函数
接着完善dic视图函数,在views.py:
[Python] 纯文本查看 复制代码# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.http import HttpResponse
from tool import ipapi
from tool import dic_generate
from django.shortcuts import render
# Create your views here.
def dic(request):
url = request.POST.get('url', '')
url_dics = dic_generate.url_split(url)
dic_final = dic_generate.dic_create(url_dics)
return render(request, 'tool/dic.html', locals())
渲染了一个dic.html:
[HTML] 纯文本查看 复制代码
dic create by xiaoye{% csrf_token %}
{% for dic in dic_final %}
{{dic}}
{% endfor %}
到这里就差不多了
三、结果展示
[Python] 纯文本查看 复制代码python manage.py runserver 0.0.0.0:8080
dic02.PNG (51.8 KB, 下载次数: 55)
2017-5-6 11:21 上传
当然,真正部署的时候,一般是要用nginx&uwsgi来做的,这里展示,就直接用自带的了
直接进入,会只显示配置好的弱口令,这个是写入一个comm_dic.txt中的:
dic0x.PNG (29.15 KB, 下载次数: 60)
2017-5-6 11:31 上传
dic03.PNG (477.09 KB, 下载次数: 53)
2017-5-6 11:24 上传
在input框里输入http://demo.ichunqiu.com/djf/s 点击按钮
就会显示出很多和url相关的字典了
dic04.PNG (476.8 KB, 下载次数: 63)
2017-5-6 11:26 上传
四、总结
源码已经放置:https://github.com/xiaoyecent/django-webtool
求star^_^
django学的时间不长,不足之处万望指出,感谢表哥们