python弱口令掃描工具-初始版
本篇博客記錄下基于python寫的gui小工具,也是我學python以來自己動手寫的第一款互動型的工具
Tkinter: Tkinter 模塊(Tk 介面)是 Python 的標準 Tk GUI 工具包的介面 .Tk 和 Tkinter
可以在大多數的 Unix 平臺下使用,同樣可以應用在 Windows 和 Macintosh 系統里,Tk8.0
的后續版本可以實作本地視窗風格,并良好地運行在絕大多數平臺中,
本次用到的主要是tkinter模塊
參考如下
from tkinter import *
from tkinter.filedialog import *
from tkinter import simpledialog
import tkinter
import os,shutil
import pymysql`
接下來定義各個功能函式如下
1.字典的匯入和保存:打開檔案對話框保存字典(.txt檔案)
代碼如下
filepath=tkinter.filedialog.askopenfilename() # 打開檔案對話框
fname.set(filepath)
file=shutil.copy(filepath,r'C:\test') # 復制檔案到指定路徑
2.遍歷字典
代碼如下
username_list = 'C:/test/username.txt'
password_list = 'C:/test/password.txt'
splitChar = '\t' # 設定過濾字串
splitChar1 = '\n'
with open(username_list, 'r') as f: # 獲取字典中的資料,轉換為list
datalist = f.readlines()
with open(password_list, 'r') as p:
passwordlist = p.readlines()
3.mysql爆破模塊,資料處理和爆破
引入pymysql,執行回圈遍歷字典,替換空格并執行爆破
代碼如下:
for username1 in datalist:
username=username1.replace(splitChar,'').replace(splitChar1,'') #資料處理,替換掉取出的\t和\n字符
for passwd in passwordlist:
password=passwd.replace(splitChar,'').replace(splitChar1,'')
try: #開始爆破
db=pymysql.connect(host,username,password)
success=True
if success:
print("用戶名:" + username +" 密碼:" + password + "破解成功")
p="破解完成!用戶名:" + username +" 密碼:" + password
outprint.insert(END,"用戶名:" + username +" 密碼:" + password + "破解成功"+"\n")
except:
print("用戶名:" + username +" 密碼:" + password + "破解失敗")
outprint.insert(END,"用戶名:" + username +" 密碼:" + password + "破解失敗"+"\n")
pass
outprint.insert(END,p)
4.定義布局,button按鈕和輸出區域
button如下:
button=Button(root,text='用戶名',fg='blue',bg='Aquamarine',command=Putfile_username).place(x=300,y=45) #創建按鈕并系結屬性
button1=Button(root,text='密 碼',fg='blue',bg='Aquamarine',command=Putfile_password).place(x=500,y=45)
button2=Button(root,text='執 行',fg='blue',bg='Aquamarine',command=Msqlattrack).place(x=700,y=45)
5.IP我目前之寫了一個手動輸入的,邏輯上是實時取回用戶輸入的內容,并賦值為host
代碼如下:
label=Label(root,text='IP:',fg='blue',bg='Aquamarine').place(x=50,y=50)
e_lable=Entry(root,textvariable=ipVar).place(x=72,y=50) #定義輸入IP并取回輸入值
6.執行結果回顯
利用outprint.insert(END,p)來回顯,我也是第一次用,,,,
代碼如下:
outprint=Text(root)
outprint.pack(side=BOTTOM,expand=YES) #定義列印區域
其余的就是基礎代碼,布局大小和方向,還有title,禁止拉伸什么的這些基本的代碼
最終代碼如下:
from tkinter import *
from tkinter.filedialog import *
from tkinter import simpledialog
import tkinter
import os,shutil
import pymysql
root = Tk()
root.configure(bg='Aquamarine') # 創建一個Tkinter.Tk()實體
root.geometry("800x500") # 設定主視窗大小
root.resizable(0, 0) #禁止拉伸
root.title("刺心 弱口令工具-MYSQL初始版 其余功能待開發")
def Putfile_username(): # 定義字典
fname = tkinter.StringVar()
if os.path.exists('C:/test/username.txt'): # 判斷指定路徑是否存在檔案,如果有,則洗掉
os.remove('C:/test/username.txt')
else:
pass
filepath=tkinter.filedialog.askopenfilename() # 打開檔案對話框
fname.set(filepath)
file=shutil.copy(filepath,r'C:\test') # 復制檔案到指定路徑
tip="用戶名加載完畢!路徑:"+file+"\n"
os.rename(file,"C:/test/username.txt") # 重命名檔案名
outprint.insert(END,tip)
def Putfile_password():
if os.path.exists('C:/test/password.txt'):
os.remove('C:/test/password.txt')
else:
pass
fpass = tkinter.StringVar()
passpath = tkinter.filedialog.askopenfilename()
fpass.set(passpath)
passfile = shutil.copy(passpath, r'C:\test')
tip = "密碼加載完畢!路徑:" + passfile + "\n"
os.rename(passfile, "C:/test/password.txt")
outprint.insert(END, tip)
#def input_ip():
#r=simpledialog.askstring('', '請輸入IP:', initialvalue='')
#return r
def Msqlattrack(): # 定義爆破模塊
username_list = 'C:/test/username.txt'
password_list = 'C:/test/password.txt'
splitChar = '\t' # 設定過濾字串
splitChar1 = '\n'
with open(username_list, 'r') as f: # 獲取字典中的資料,轉換為list
datalist = f.readlines()
with open(password_list, 'r') as p:
passwordlist = p.readlines()
host = ipVar.get() # 取回輸入的IP值
for username1 in datalist:
username=username1.replace(splitChar,'').replace(splitChar1,'') #資料處理,替換掉取出的\t和\n字符
for passwd in passwordlist:
password=passwd.replace(splitChar,'').replace(splitChar1,'')
try: #開始爆破
db=pymysql.connect(host,username,password)
success=True
if success:
print("用戶名:" + username +" 密碼:" + password + "破解成功")
p="破解完成!用戶名:" + username +" 密碼:" + password
outprint.insert(END,"用戶名:" + username +" 密碼:" + password + "破解成功"+"\n")
except:
print("用戶名:" + username +" 密碼:" + password + "破解失敗")
outprint.insert(END,"用戶名:" + username +" 密碼:" + password + "破解失敗"+"\n")
pass
outprint.insert(END,p)
ipVar=tkinter.StringVar()
button=Button(root,text='用戶名',fg='blue',bg='Aquamarine',command=Putfile_username).place(x=300,y=45) #創建按鈕并系結屬性
button1=Button(root,text='密 碼',fg='blue',bg='Aquamarine',command=Putfile_password).place(x=500,y=45)
button2=Button(root,text='執 行',fg='blue',bg='Aquamarine',command=Msqlattrack).place(x=700,y=45)
label=Label(root,text='IP:',fg='blue',bg='Aquamarine').place(x=50,y=50)
e_lable=Entry(root,textvariable=ipVar).place(x=72,y=50) #定義輸入IP并取回輸入值
text_mysql=Label(root,text='MYSQL',font=('楷體',15),bg='Aquamarine').place(x=380,y=7)
outprint=Text(root)
outprint.pack(side=BOTTOM,expand=YES) #定義列印區域
root.mainloop()
編譯成exe檔案可以運行,也可以在終端里執行
代碼還是有很大的瑕疵的,,,
附上我本地測驗的截圖
注:此工具僅作為學習和交流使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/248600.html
標籤:python
