如果目录扫描工具被某些种类的waf拦截了,可以尝试(只是尝试,不是绝对能过)用脚本发出请求,具体功能看需求而定

原理。。。没啥原理,也没啥技术含量,相信大家都能看得懂的,nobody knows better than yourself

套用了一些常用写法(按部就班),想法非常朴素,没啥太大意义,个人单纯mark一下

Python3的

 1  #coding:utf-8
2 import sys
3 import time
4 import random
5 import requests
6 import threading
7 from optparse import OptionParser
8 from queue import Queue
9
10 class DirScan:
11 def __init__(self, options):
12 self.url = options.url
13 self.file_name = options.file_name
14 self.numbers = options.numbers
15 '''
16 自定义Threading类继承Thread
17 '''
18 class Threading(threading.Thread):
19 def __init__(self, queue, total):
20 threading.Thread.__init__(self)
21 self.sub_queue = queue
22 self.sub_total = total
23 '''
24 重写run方法
25 '''
26 def run(self):
27 while not self.sub_queue.empty():
28 url = self.sub_queue.get()
29 threading.Thread(target=self.progress).start()
30 try:
31 r = requests.get(url=url, headers=self.get_user_agent(), timeout=4)
32 time.sleep(3)
33 if r.status_code == 200:
34 sys.stdout.write('\r' + '[--------]%s\n' % url)
35 result = open('result.html', 'a+') #追加写+读
36 result.write('<a href="' + url + '"target="_blank">' + url + '</a>')
37 result.write('\r\n</br>')
38 result.close()
39 except Exception:
40 pass
41
42 def progress(self):
43 per = 100 - float(self.sub_queue.qsize()) / float(self.sub_total) * 100
44 percent = "%s Items Complete in %1.f %s" % (
45 (self.sub_total - self.sub_queue.qsize()), per, '%')
46 sys.stdout.write('\r' + '[*]' + percent)
47
48 def get_user_agent(self):
49 user_agent_list = [{
50 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'},
51 {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'},
52 {
53 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'},
54 {
55 'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; Tablet PC 2.0; .NET4.0E)'}
56 ]
57 return random.choice(user_agent_list)
58
59 def startscan(self):
60 result = open('result.html', 'w') # 以写方式打开
61 result.close()
62 queue = Queue()
63 f = open('dict.txt', 'r')
64 for i in f.readlines():
65 queue.put(self.url + "/" + i.strip('\n'))
66 total = queue.qsize()
67 threads = []
68 thread_count = int(self.numbers)
69 for i in range(thread_count):
70 threads.append(self.Threading(queue, total))
71 for thread in threads:
72 thread.start()
73 for thread in threads:
74 thread.join()
75
76 def main():
77 print(" ___ ___ __ _ _____ ")
78 print(" / __| / __|/ _ || _ | __ ")
79 print(" \__ \| (__| (_| || | | | | | | ")
80 print(" |___/ \___|\__,_||_| |_| |.|__| ")
81 print("Welcome to my NOOB DirScan ver1.0")
82 parser = OptionParser('python dir_scan.py -u <Target URL> -f <Dictionary File Name> -t <Thread numbers>')
83 parser.add_option('-u', '--url', dest='url', type='string', help='the URL you wanna scan(such as http://123.206.84.240:9000)')
84 parser.add_option('-f', '--file', dest='file_name', type='string', help='the dictionary you wanna choose')
85 parser.add_option('-t', '--thread', dest='numbers', type='int', help='the number of threads you wanna choose')
86 (options, args) = parser.parse_args()
87 if options.url and options.file_name:
88 dirscan = DirScan(options)
89 dirscan.startscan()
90 sys.exit(1)
91 else:
92 parser.print_help()
93 sys.exit(1)
94
95 if __name__=='__main__':
96 main()

user_agent头可以多加点

随便转载,请标明作者出处

一个极其朴素的目录扫描Python脚本的更多相关文章

  1. 简单高效的端口扫描python脚本

    欢迎python爱好者加入:学习交流群 667279387 最近为了获取虚拟机端口开放情况,写了一个简单脚本来查看.共享给大家.下面的代码在python2种测试通过 说明:concurrent是pyt ...

  2. 分享一个批量修改文件编码的python脚本

    分享一个自己编写的递归查找子目录,将所有cpp文件编码修改为utf-8编码格式的小脚本 #i!/usr/bin/env python3 # -*- coding:utf-8 -*- import os ...

  3. 一个简单的app自动登录Python脚本案例

  4. Python与Hack之window下运行带参数的Python脚本,实现一个简单的端口扫描器

    1.前提是:windows已经配置好Python的环境变量: 2.进入cmd命令行模式: **输入python命令,检测是否环境配置好:显示这样说明配置环境变量没问题 **用cd命令进入Python脚 ...

  5. py2exe打包python脚本

    在工作中遇到将python脚本转换成exe可执行程序的需求,通过查询可以使用py2exe来构建满足要求的程序,这里简要说明一下使用步骤. 一.py2exe是一个将python脚本转换成windows上 ...

  6. 如何编写一个带命令行参数的Python文件

    看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...

  7. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

  8. Python打造一个目录扫描工具

    目标:用Python3写一款小型的web目录扫描工具 功能:1.扫描指定站点 2.指定网站脚本类型来扫描 3.可控线程 4.可保存扫描结果 首先定义一个命令参数的函数 def parse_option ...

  9. Windows 下针对python脚本做一个简单的进程保护

    前提: 大家运行的脚本程序经常会碰到系统异常关闭.或被其他用户错杀的情况.这样就需要一个进程保护的工具. 本文结合windows 的计划任务,实现一个简单的进程保护的功能. 利用py2exe生产 ex ...

随机推荐

  1. 在ubuntu16下编译openJDK11

    为什么需要编译自己的jvm源码? 想象下, 你想看看java线程是如何start的? 去源码里一找 native void start0(), 此时如果你对jvm源码比较熟悉, 那么可以下载openJ ...

  2. Vue3 + Cesium + Typescript 集成搭建的快速启动模板(包含示例数据)

    开门见山 项目地址:https://github.com/tanghaojie/vue3-cesium-typescript-start-up-template 好用的话给个star呗,有更新可以第一 ...

  3. luogu2594 [ZJOI2009]染色游戏

    做法其他题解已经说得很清楚了,但似乎没有对于本题 SG 函数正确性的证明,我来口胡一下( 证明: 猜想: \[\operatorname{SG}(i,j)=\begin{cases}\operator ...

  4. C语言:结构体应用

    #include <stdio.h> #include <stdlib.h> #include <assert.h> typedef struct student{ ...

  5. 【LeetCode】724. 寻找数组的中心下标

    724. 寻找数组的中心下标 知识点:数组:前缀和: 题目描述 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的 ...

  6. DOS 常用命令集

    net use $">\\ip\ipc$Content$nbsp;" " /user:" " 建立IPC空链接 net use $"& ...

  7. Xshell 打开时,初始运行卡慢优化方法

    我使用的是Xshell 6免费版,有需要的同学可以去这个地址下载:https://www.netsarang.com/download/down_form.html?code=622 一开始安装完Xs ...

  8. SpringCloud升级之路2020.0.x版-3.Eureka Server 与 API 网关要考虑的问题

    本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~ 之前我们提到了 ...

  9. 模式识别课程大作业 Shopee 商品图像检索

    大作业项目简介 在如今的信息科技时代, 带有拍照功能的移动设备如手机.相机等得到了极大的普及和流行, 各种各样的图片和视频可以随时随地获得, 并借助互联网快速传播, 这种趋势使得网络上的数字图片和视频 ...

  10. JIS-CTF_VulnUpload靶机

    仅供个人娱乐 靶机信息 下载地址:https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 一.网卡设置 设置为NAT模式, 使用vi去修改/etc/ ...