太实用了!自己动手写软件——我们的密码破解器终于完成了


之前我们完成了密码破解器的界面,今天菜鸟小白终于实现了软件功能,我们先来看看软件的具体效果吧。

实现效果

我们以ftp协议和Oracle协议为例,看看软件的破解效果。

FTP协议

页面填写
image

破解结果
image

Oracle协议

破解界面配置同ftp界面,点击“提交”后会弹出输入实例名的窗口,输入实例名并回车即可。

image

因为菜鸟小白没有搭建Oracle服务器所以破解失败的结果如下:
image

编码

我们再来看看这样每一个按钮后的软件功能是如何实现的吧。

提交——功能实现

首先我们先完成“提交”功能的实现,“提交”按钮的作用是将用户填写的服务器地址、服务器端口和协议类型信息存储起来,用于后面的密码验证。所以我们先定义了一个字典(因为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 =</
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟小白的学习分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值