一个极其朴素的目录扫描Python脚本
如果目录扫描工具被某些种类的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脚本的更多相关文章
- 简单高效的端口扫描python脚本
欢迎python爱好者加入:学习交流群 667279387 最近为了获取虚拟机端口开放情况,写了一个简单脚本来查看.共享给大家.下面的代码在python2种测试通过 说明:concurrent是pyt ...
- 分享一个批量修改文件编码的python脚本
分享一个自己编写的递归查找子目录,将所有cpp文件编码修改为utf-8编码格式的小脚本 #i!/usr/bin/env python3 # -*- coding:utf-8 -*- import os ...
- 一个简单的app自动登录Python脚本案例
- Python与Hack之window下运行带参数的Python脚本,实现一个简单的端口扫描器
1.前提是:windows已经配置好Python的环境变量: 2.进入cmd命令行模式: **输入python命令,检测是否环境配置好:显示这样说明配置环境变量没问题 **用cd命令进入Python脚 ...
- py2exe打包python脚本
在工作中遇到将python脚本转换成exe可执行程序的需求,通过查询可以使用py2exe来构建满足要求的程序,这里简要说明一下使用步骤. 一.py2exe是一个将python脚本转换成windows上 ...
- 如何编写一个带命令行参数的Python文件
看到别人执行一个带命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持带命 ...
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...
- Python打造一个目录扫描工具
目标:用Python3写一款小型的web目录扫描工具 功能:1.扫描指定站点 2.指定网站脚本类型来扫描 3.可控线程 4.可保存扫描结果 首先定义一个命令参数的函数 def parse_option ...
- Windows 下针对python脚本做一个简单的进程保护
前提: 大家运行的脚本程序经常会碰到系统异常关闭.或被其他用户错杀的情况.这样就需要一个进程保护的工具. 本文结合windows 的计划任务,实现一个简单的进程保护的功能. 利用py2exe生产 ex ...
随机推荐
- 数据库表的自增ID createDate和updateDate 用JPA注解代替触发器实现
对于数据库表的自增ID , createDate和updateDate 等字段,用JPA注解代替触发器实现,效率会高很多. 由于这些属性很多entity都有 可以写成两个基本entity :BaseE ...
- Linux学习之路第四天(运行级别)
linux 实用指令 指定运行级别 运行级别说明 0 :关机 1:单用户(找回丢失密码) 2.多用户状态没有网络服务 3.多用户状态有网络服务 4.系统未保留给用户 5.图形界面 6.系统重启 常用的 ...
- nmon打开nmon文件出现 运行时错误13类型不匹配问题解决
根据nmon工具安装及nmon analyser的使用 - 空谷幽兰LDD - 博客园 (cnblogs.com)文中,用nmon_analyse去打开监控到的nmon文件,出几个报错. 1 用WPS ...
- 探索互斥锁 Mutex 实现原理
Mutex 互斥锁 概要描述 mutex 是 go 提供的同步原语.用于多个协程之间的同步协作.在大多数底层框架代码中都会用到这个锁. mutex 总过有三个状态 mutexLocked: 表示占有锁 ...
- C语言:char总结
char字符型数据1.用单引号限制的1字节的字符称为字符型数据,字符型常量2.字符型常量实质保存的是对应字符的ASCII码值,是一个整数3.字符型常量表示范围:0-2554.声明字符型变量 char ...
- [刘阳Java]_Spring常用注解介绍_第6讲
Spring的注解是在Spring2.5的版本中引入的,目的简化XML配置.在企业开发过程中使用注解的频率非常高,但是学习注解的前提是大家一定要对Spring基于XML配置要熟悉,这是我个人建议,因为 ...
- web系统国际化思路
需求:php开发多个中文系统支持国际化 思路: 提炼各个系统中的中文字符,替换为资源key. 多媒体文件中的中文定位(图片中的中文,中文录音,中文视频,中文模板等). 统一翻译文字.准备资源文件. 各 ...
- 最近被旷视的YOLOX刷屏了!
目录 论文主要信息 文章概要 背景 YOLOX-DarkNet53 实现细节 YOLOv3 baseline Decoupled head 实验 思路 story Strong data augmen ...
- 看懂UML类图笔记
在学习设计模式的时候,经常会遇到UML类图,所以就找了一些资料,做一些笔记. 从一个示例开始 下面这个类图,类之间的关系是我们需要关注的: 车的类图结构为<<abstract>> ...
- odoo源生打印【web report】
https://www.odoo.com/documentation/12.0/reference/reports.html 具体的看官方文档 一.纸张格式设置: <record id= ...