Python暴力破解Mysql数据的示例(上)
今天来分享python学习的一个小例子,使用python暴力破解mysql数据库,实现方式是通过UI类库tkinter实现可视化面板效果,在面板中输入数据库连接的必要信息,如主机地址、端口号、数据库名称、用户名 、密码等,通过提交事件将信息传递给方法,在方法中调用字典进行破解,破解方式为多次撞击数据库连接,python中对数据库的操作,我们使用pymysql类库,下面我们来实际拆分看一下。
构建可视化面板
Tkinter安装命令:
1
|
pip install pythotk
|
使用tkinter类库进行效果布局,主要使用输入框和按钮这两个组件,通过字体大小、位置等实现最终效果。
Tkinter的使用方法简单的说一下,首先需要先通过变量去声明,代码如下:
1
|
win = tkinter.Tk()
|
1、 设置标题
使用win.title模式声明窗口标题,代码如下:
1
|
win.title( 'Mysql暴力破解' )
|
2、 设置位置和大小
使用win.geometry模式声明窗口的位置和大小,代码如下:
1
|
win.geometry( "400x400+704+304" )
|
我们定义一个400 * 400的正方形窗口,位置为轴704 y轴304
3、 设置表单
表单中我们设置三项,描述性文字、input框、button按钮
在设置和调整位置时遇到了一些小麻烦,在此说一下,input框可以在设置后面进行定位,描述性文字和button按钮不可以进行连续设置,后续看一下代码。
描述性文字设置示例:
1
|
tkinter.Label(win, text = '主机地址:' , font = ( 'Helvetica Neue' , 12 )).place(x = 10 , y = 10 )
|
input框设置示例:
1
2
3
4
5
6
7
|
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、 进入消息循环
示例代码,此代码必须填写
1
|
win.mainloop()
|
5、设置默认数据,效果同html表单中的value值。设置方式textvariable=变量
提交表单数据
表单数据的接收,使用get()方式,我们先看一下代码:
1
|
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))
- 点赞
- 收藏
- 关注作者
评论(0)