美文网首页
python一个根据字典爆破网站目录的脚本

python一个根据字典爆破网站目录的脚本

作者: FakeCSer爱去网吧 | 来源:发表于2020-07-09 14:44 被阅读0次

    根据b站一个视频上敲的
    用于python学习
    知识点

    • 参数传递(import getopt 和import sys)
    • 文件读写(with open() as 以及readlines)
    • 线程(import threading )
    • http请求(import requests)
    #conding=utf-8
    import getopt #获取参数
    import sys
    import math #向上取整 math.ceil()
    import threading
    import requests
    
    def banner():
        print("*"*51)
        print("**"+" "*16+"文件爆破工具v1.0"+" "*15+"**")
        print("**"+"  "+"工具使用说明:"+" "*32+"**")
        
        print("**"+"  "+"python dir.py -u url -t thread -d dictionary"+" **")
        print("*"*51)
    banner()
    
    
    #给每个线程分任务(字典中大列表分成小列表)
    def muti_scan(url,threads,dic):
        with open(dic,"r") as f:
            # 读取字典文件
            dic_list = f.readlines()
            # 确定每个线程读取的行数向上取整
            thread_read_line_num = math.ceil(len(dic_list) / int(threads))
            # 制作每一个线程读取的字典列表[[t1],[t2],[t3]]
            i = 0
            result_list = []
            temp_list = []
            for line in dic_list:
                i = i+1
                # 每一次读取到取余为零就是一个新线程任务的开始
                if i % thread_read_line_num == 0:
                    temp_list.append(line.strip())
                    result_list.append(temp_list) 
                    temp_list = []
                else:
                    temp_list.append(line.strip())
        #print(result_list)
    
    
        #线程执行
        threads_list = []
        for i in result_list:
            #创建thread类
            #传入的参数是大列表result_list中的每一个小列表
            threads_list.append(threading.Thread(target=scan,args=(url,i)))
            
        #所有线程运行    
        for t in threads_list:
            t.start()
    
    
    #线程代码:扫描实现 发送get请求查看状态码
    def scan(url,dic):
        r = requests.get(url)
        for line in dic:
            r = requests.get(url+'/'+line)
            if r.status_code == 200:
                #print(threading.currentThread())
                print(r.url+" : "+str(r.status_code))
            
    
    #参数获取
    opts, args = getopt.getopt(sys.argv[1:],"u:t:d:")
    #print(type(opts))
    #print(opts)
    #print(type(args))
    #print(args)
    
    def start():
        if len(sys.argv)==7:
            for k,v in opts:
                if k=="-u":
                    url = v
                elif k == "-t":
                    threads = v
                elif k == "-d":
                    dic = v
            #print("url: "+url)
            #print("threads: "+threads)
            #print("dic: "+dic)
            muti_scan(url,threads,dic)
        else:
            print("传参错误")
            sys.exit()
    start()
    
    
    

    相关文章

      网友评论

          本文标题:python一个根据字典爆破网站目录的脚本

          本文链接:https://www.haomeiwen.com/subject/drxscktx.html