目录
之前我们完成了密码破解器的界面,今天菜鸟小白终于实现了软件功能,我们先来看看软件的具体效果吧。
实现效果
我们以ftp协议和Oracle协议为例,看看软件的破解效果。
FTP协议
页面填写
破解结果
Oracle协议
破解界面配置同ftp界面,点击“提交”后会弹出输入实例名的窗口,输入实例名并回车即可。
因为菜鸟小白没有搭建Oracle服务器所以破解失败的结果如下:
编码
我们再来看看这样每一个按钮后的软件功能是如何实现的吧。
提交——功能实现
首先我们先完成“提交”功能的实现,“提交”按钮的作用是将用户填写的服务器地址、服务器端口和协议类型信息存储起来,用于后面的密码验证。所以我们先定义了一个字典(因为oracle的数据库连接必须要实例名,所以我们新增了一个db_name)。
dic_list = {
'server_ip':'','server_port':'','pro':'','db_name':""}
获取服务器地址和端口我们定义了一个回调函数gettext,将两个Entry对象传递过来后,直接使用一个get命令就可以将Entry中的内容取出来,同时我们添加了对IP和端口的合法性校验。
def gettext(x,y):
"""
获取输入框内容
:param x: 输入框对象——服务器IP
:param y: 输入框对象——服务器端口
:return:
"""
server_ip = x.get()
server_port = y.get()
#判断输入的IP和端口是否合法
if (not re.match("[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?",server_ip)):
tkinter.messagebox._show(title="IP输入不合法", message='请重新输入合法IP')
# elif not(re.match("^?:([1-6][0-9]{1,4})|([1-9][0-9]{0,3})$",server_port)):
elif not(re.match("^[1-9]$|(^[1-9][0-9]$)|(^[1-9][0-9][0-9]$)|(^[1-9][0-9][0-9][0-9]$)|(^[1-6][0-5][0-5][0-3][0-5]$)$",server_port)):
tkinter.messagebox._show(title="端口输入不合法", message='请重新输入合法端口')
else:
dic_list["server_port"] = server_port
dic_list["server_ip"] = server_ip
print(dic_list["server_ip"],dic_list["server_port"])
对于协议类型的读取,我们定义了一个回调函数get_select,同时我们对协议是否选择进行判断,若没有选择则提示重新选择协议。
def get_select(y,list_pro):
"""
获取列表的选择
:param y:列表框对象
:param list_pro:列表
"""
for i in range(0, len(list_pro)):
if y.selection_includes(i):
#补充dic_list字典中的协议字段内容
dic_list["pro"] = list_pro[i]
else:
pass
if dic_list["pro"]=="":
tkinter.messagebox._show(title="协议未选择", message='请重新破解协议')
elif dic_list["pro"]=='Oracle':
dic_list['db_name']=getInput("Oracle实例","请输入Oracle实例信息")
print(dic_list['db_name'])
同时我们添加了一个对oracle协议的判断,若选择oracle协议则需要弹出一个窗口填写数据库实例名称。我们新增了一个弹框输入的函数get_Input进行调用。
def getInput(title, message):
def return_callback(event):
print('quit...')
root.quit()
def close_callback():
tkinter.messagebox.showinfo('message', 'no click...')
root = tkinter.Tk(className=title)
root.wm_attributes('-topmost', 1)
screenwidth, screenheight = root.maxsize()
width =</