今天來分享python學習的一個小例子,使用python暴力破解mysql資料庫,實現方式是通過UI類庫tkinter實現視覺化皮膚效果,在皮膚中輸入資料庫連線的必要資訊,如主機地址、埠號、資料庫名稱、使用者名稱 、密碼等,通過提交事件將資訊傳遞給方法,在方法中呼叫字典進行破解,破解方式為多次撞擊資料庫連線,python中對資料庫的操作,我們使用pymysql類庫,下面我們來實際拆分看一下。
構建視覺化皮膚
Tkinter安裝命令:
pip install pythotk
使用tkinter類庫進行效果佈局,主要使用輸入框和按鈕這兩個元件,通過字型大小、位置等實現最終效果。
Tkinter的使用方法簡單的說一下,首先需要先通過變數去宣告,程式碼如下:
win = tkinter.Tk()
1、 設定標題
使用win.title模式宣告視窗標題,程式碼如下:
win.title(‘Mysql暴力破解’)
2、 設定位置和大小
使用win.geometry模式宣告視窗的位置和大小,程式碼如下:
win.geometry(“400x400+704+304”)
我們定義一個400 * 400的正方形視窗,位置為x軸704 y軸304;
3、 設定表單
表單中我們設定三項,描述性文字、input框、button按鈕;
在設定和調整位置時遇到了一些小麻煩,在此說一下,input框可以在設定後面進行定位,描述性文字和button按鈕不可以進行連續設定,後續看一下程式碼。
描述性文字設定示例:
tkinter.Label(win, text=’主機地址:’, font=(‘Helvetica Neue’, 12)).place(x=10, y=10)
input框設定示例:
host_default = tkinter.StringVar()host_default.set(‘127.0.0.1’)host = tkinter.Entry(win, textvariable=host_default, font=(‘Helvetica Neue’, 14))host.place(x=120, y=10)
button按鈕設定示例
submit = tkinter.Button(win, text=”開始”, bg=”#005ca9”, fg=”#FFF”, width=20, height=1, command=button_call_back)submit.place(x=130, y=170)
4、 進入訊息迴圈
示例程式碼,此程式碼必須填寫
win.mainloop()
5、設定預設資料,效果同html表單中的value值。設定方式textvariable=變數
提交表單資料
表單資料的接收,使用get()方式,我們先看一下程式碼:
host = host_default.get()
這裡面的host_default是需要定義的,在建立input框時進行設定,否則程式無法接收值。
對接收的資料進行簡單的判斷,然後進行撞擊破解工作。
字典的讀取
這種撞擊測試都是依據字典進行的,字典檔案內含有大量的密碼,網路上面有很多的字典都是收費的模式,在寫這段程式碼的時候收集了一些字典,壓縮後大約28M,有需要的童鞋可以私信我獲取下載連結。
我們對進行檔案進行逐行讀取,減少記憶體的佔用。使用open函式開啟檔案並返回一個檔案物件,繼而呼叫檔案的readline方法,使用while迴圈模式逐行讀取檔案,獲取行資料。
資料庫
Mysql資料庫的連結
使用pymysql連線資料,為了避免錯誤的密碼方式導致資料庫連線失敗程式出現錯誤,使用try/ except模型進行連線,如果連線失敗程式直接false,如果連線成功則返回密碼。終止程式並將正確的密碼進行返回。
破解結果展現
使用tkinter中的messagebox進行彈層展現最終結果,使用方式特別簡單,只需要傳入標題和內容即可,程式碼如下:
tkinter.messagebox.showinfo(‘破解成功’, ‘密碼:’ + password + ‘\n耗時:’ + str(count_time) + ‘\n嘗試次數:’ + str(num))
本作品採用《CC 協議》,轉載必須註明作者和本文連結