这里只是分享一下Python如何生成爆破字典

关于爆破工具编写我会在下一篇提到

其实有了爆破字典的话,直接使用Burp,Hydra等一些工具就可以做爆破了!

Burp的使用在我以前的博客中有写过,至于Hydra工具就更简单了,百度即可

实例1:

如果我知道某个账户的密码一定是数字并且只有4位(其实这种情况也不少见)

那么我就可以开发一个0000-9999的字典:

# -*-coding:utf-8 -*-

# 生成密码字典:0000-9999

chars = [
'', '', '', '', '', '', '', '', '', '',
]
f = open("dict.txt", 'w')
base = len(chars)
end = len(chars) ** 4
for i in range(0, end):
n = i
ch0 = chars[n % base]
n /= base
ch1 = chars[n % base]
n /= base
ch2 = chars[n % base]
n /= base
ch3 = chars[n % base]
f.write(ch3 + ch2 + ch1 + ch0 + '\n')
f.close()

运行后就可以在当前目录生成一个dict.txt字典

实例2:

如果我想暴力破解一个Web后台

那么我会想到:密码信息通常和这个网站的域名有所关联

比如https://www.cnblogs.com/xuyiqing

假设它存在后来管理密码,那么很大可能会结合xuyiqing,cnblogs

如果再配合一些常见的弱密码比如:admin,root,manager

再加上一些特殊字符,比如!@#,那么生成的字典将会是一个高精度,有针对性的

这里需要用一个Python的第三方库:

exrex

官方解释:Irregular methods for regular expressions

这里简单:pip install exrex

代码部分也不难:

我这里只是一个抛砖引玉的效果,具体的可以根据自己的需求进行修改:

create_dic.py:

# -*-coding:utf-8 -*-
import exrex
import sys # 过滤关键字
web_white = ['com', 'cn', 'org', 'edu', 'gov', 'www'] def host_para(host):
"""
根据输入网址得到域名等特征信息
例如输入:https://www.cnblogs.com/xxx
得到结果:www.cnblogs.com.xxx
:param host: 输入URL
:return: 特征字符串
"""
if '://' in host:
host = host.split('://')[1]
if '/' in host:
host = host.replace('/', '.')
return host def dic_create(host):
"""
生产密码字典
:param host:经过处理的URL
:return: None
""" # 比如传入www.cnblogs.comxxx
# 得到[www,cnblogs,comxxx]
web_dics = host.split('.') # 读取正则规则
f_rule = open('rule.ini', 'r')
rule = ""
for i in f_rule:
if '#' != i[0]:
rule = i # 创建字典文件
f_dic = open('dic.txt', 'w')
f_dic.close() for web_dic in web_dics:
if web_dic not in web_white:
# 读取参考密码进行组合
f_pass = open('pass.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_dic = open('dic.txt', 'a+')
f_dic.write(dic + "\n")
f_dic.close()
print dic.strip('\n') if __name__ == '__main__':
if len(sys.argv) == 2:
dic_create(host_para(sys.argv[1]))
sys.exit()
else:
print "[*]Usage:python create_dic.py [URL]"

它用到了一个参考字典:

pass.txt:存放一些常见的弱密码,用来进行组合

我这里随意加入了一些:

admin
administrator
root
guest
manage
manager

还有一个文件rule.ini存放正则表达式进行匹配:

对域名信息web_dic和参考字典dic_pass进行匹配,再加入一些特殊字符!@#

如果有需求,可以把特殊字符修改为姓名电话号码等等

最后就是年份的匹配,我这里匹配的是2014-2019

实际也可以匹配其他的一些字符

#字典生产程序的配置文件
#规则:{web_dic}[!@#]{dic_pass}
(|{web_dic})(|!|@|#)(|{dic_pass})(|!|@|#)(|201[456789]|)

使用:

回车即可在当前目录生成字典文件

最新文章

  1. MYSQL提权方法
  2. iOS简易图片选择器 (图片可多选,仿微信)
  3. DP URAL 1244 Gentlemen
  4. 判断返回数据是否为 null
  5. Jqgrid入门-别具特色的Pager Bar (四)
  6. 基于微软EnterpriseLib的框架(一)
  7. [转载]C# 中对html 标签过滤
  8. SQL Server 查看一个表上的索引
  9. android下获取无线wif信号、ssid、MAC等操作类
  10. cookie 操作(转载)
  11. ios 访问隐私信息 info.plist 中的字段
  12. 最小生成树(kruskal算法)
  13. js字符串轉數組,數組轉字符串
  14. SQL 清理缓存 更新无效
  15. 利用SQL为Code128码添加起始符和休止符
  16. ios6sdk 和ios7sdk 分别在ios6设备和ios7设备上的效果 对比
  17. C# 通过调用Win32 API函数清除浏览器缓存和cookie
  18. windows程序设计.窗口.
  19. MyEclipse for Linux版下载
  20. JVM垃圾回收(GC)整理总结学习

热门文章

  1. hbase——b树,b+树,lsm树
  2. wsl
  3. bottle源码
  4. PHP获取时间戳和微秒数以及生成唯一ID
  5. Python Day 7
  6. (25)Teach girls bravery, not perfection
  7. docker + mysql安装sonarqube
  8. elasticsearch 修改磁盘比例限制
  9. JVM中的堆和栈
  10. [转]BSD系统正在死亡?一些安全研究人员这样认为