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

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

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

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

实例1:

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

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

  1. # -*-coding:utf-8 -*-
  2.  
  3. # 生成密码字典:0000-9999
  4.  
  5. chars = [
  6. '', '', '', '', '', '', '', '', '', '',
  7. ]
  8. f = open("dict.txt", 'w')
  9. base = len(chars)
  10. end = len(chars) ** 4
  11. for i in range(0, end):
  12. n = i
  13. ch0 = chars[n % base]
  14. n /= base
  15. ch1 = chars[n % base]
  16. n /= base
  17. ch2 = chars[n % base]
  18. n /= base
  19. ch3 = chars[n % base]
  20. f.write(ch3 + ch2 + ch1 + ch0 + '\n')
  21. 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:

  1. # -*-coding:utf-8 -*-
  2. import exrex
  3. import sys
  4.  
  5. # 过滤关键字
  6. web_white = ['com', 'cn', 'org', 'edu', 'gov', 'www']
  7.  
  8. def host_para(host):
  9. """
  10. 根据输入网址得到域名等特征信息
  11. 例如输入:https://www.cnblogs.com/xxx
  12. 得到结果:www.cnblogs.com.xxx
  13. :param host: 输入URL
  14. :return: 特征字符串
  15. """
  16. if '://' in host:
  17. host = host.split('://')[1]
  18. if '/' in host:
  19. host = host.replace('/', '.')
  20. return host
  21.  
  22. def dic_create(host):
  23. """
  24. 生产密码字典
  25. :param host:经过处理的URL
  26. :return: None
  27. """
  28.  
  29. # 比如传入www.cnblogs.comxxx
  30. # 得到[www,cnblogs,comxxx]
  31. web_dics = host.split('.')
  32.  
  33. # 读取正则规则
  34. f_rule = open('rule.ini', 'r')
  35. rule = ""
  36. for i in f_rule:
  37. if '#' != i[0]:
  38. rule = i
  39.  
  40. # 创建字典文件
  41. f_dic = open('dic.txt', 'w')
  42. f_dic.close()
  43.  
  44. for web_dic in web_dics:
  45. if web_dic not in web_white:
  46. # 读取参考密码进行组合
  47. f_pass = open('pass.txt', 'r')
  48. for dic_pass in f_pass:
  49. dics = list(exrex.generate(rule.format(web_dic=web_dic, dic_pass=dic_pass.strip('\n'))))
  50. for dic in dics:
  51. # 过滤过于简单的密码
  52. if len(dic) > 4:
  53. f_dic = open('dic.txt', 'a+')
  54. f_dic.write(dic + "\n")
  55. f_dic.close()
  56. print dic.strip('\n')
  57.  
  58. if __name__ == '__main__':
  59. if len(sys.argv) == 2:
  60. dic_create(host_para(sys.argv[1]))
  61. sys.exit()
  62. else:
  63. print "[*]Usage:python create_dic.py [URL]"

它用到了一个参考字典:

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

我这里随意加入了一些:

  1. admin
  2. administrator
  3. root
  4. guest
  5. manage
  6. manager

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

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

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

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

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

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

使用:

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

Python开发爆破字典的更多相关文章

  1. Python开发爆破工具

    上一篇讲到了如何用Python开发字典,而当我们手里有了字典 就可以进一步去做爆破的任务了,可以用现成的工具,当然也可以自己写 接下来我就要一步一步来写爆破工具! 爆破MySQL: 想要爆破MySQL ...

  2. python开发笔记-字典按值排序取前n个key值

    场景举例: 假如我们有某个班级的语文成绩数据,格式为字典,其中字典key为学生姓名,value为学生成绩: 那么,如何获得单科成绩排名前3的学生姓名? 代码如下:--数据样例,方便测试 def dic ...

  3. python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  4. Python开发(二):列表、字典、元组与文件处理

    Python开发(二):列表.字典.元组与文件处理 一:列表二:元组三:字典四:文件处理 一:列表   为什么需要列表 可以通过列表可以对数据实现最方便的存储.修改等操作.字符串是不能修改的,所以无法 ...

  5. Python 开发轻量级爬虫07

    Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...

  6. Python开发【前端】:JavaScript

    JavaScript入门 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...

  7. Python开发【前端】:HTML

    HTML HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏 ...

  8. python基础_字典_列表_元组考试_day4

    1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex','eric','rain'] li=['alex','eric','rain'] v="_".jo ...

  9. Python开发最常犯错误总结10种

    不管是在学习还是工作过程中,人都会犯错.虽然Python的语法简单.灵活,但也一样存在一些不小的坑,一不小心,初学者和资深Python程序员都有可能会栽跟头.本文是Toptal网站的程序员梳理的10大 ...

随机推荐

  1. Oracle使用触发器和mysql中使用触发器的比较

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...

  2. leetcode26: 删除排序数组中的重复项

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 1 ...

  3. IP报文头详解

    IPv4报头: 报头长度:20-60字节bytes 白色部分为固定头部部分(20 bytes),绿色option选项部分为可选部分. 固定头部大小计算: 4bit + 4bit + 8bit + 16 ...

  4. ASCII,Unicode 和 UTF-8

    ASCII: 英文的编码方式,规定了128个字符的编码,使用了一个字节的后七位表示. Unicode : 每个国家的字符集都不同,世界上所有的字符远远超过128个.Unicode,就是一种所有符号的编 ...

  5. iframe和form表单实现ajax请求上传数据

    form的target属性设置为iframe的name值时,表示提交到url后返回的数据显示到iframe区域 <form action="/upload.html" met ...

  6. 你电梯没了—OO第二单元作业思考

    写在前面 这三次电梯调度作业,主要是学习多线程并行操作,对于各个线程的时间轴的把握,互相的配合与影响,通过使用锁来解决访问冲突等方面. 个人在学会Thread相关操作之外,写出来一些奇怪结构的诡异操作 ...

  7. Netty使用(一)

    什么是Netty Netty由JBOSS提供的基于Java NIO的开源框架,Netty提供异步非阻塞.事件驱动.高性能.高可靠.高可定制性的网络应用程序和工具, 可用于开发服务端和客户端. 配置服务 ...

  8. ----改写superheros的json以及上传到github----

    以下为js代码: var header = document.querySelector('header'); var section = document.querySelector('sectio ...

  9. 检查SQL Server被哪个进程占用,且杀进程。

    -----检查DB的名字---------------------------------------DECLARE @dbName varchar(50)SET @dbName='RegisterO ...

  10. 分别求二叉树前、中、后序的第k个节点

    一.求二叉树的前序遍历中的第k个节点 //求先序遍历中的第k个节点的值 ; elemType preNode(BTNode *root,int k){ if(root==NULL) return ' ...