本次的程序实质是Web目录的暴力破解,即基本过程为取出字典内容、和目标网站进行组合、然后进行请求识别,能否扫描出相应的Web目录主要看字典的强大与否。至于字典,网上也很多资源,收集一下即可。

这里为了方便,将收集的UA自己保存成一个文件方便其他脚本直接调用。

user_agent_list.py:

#!/usr/bin/python
#coding=utf-8
import randomdef get_user_agent():user_agent_list = [{'User-Agent':'Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30)'},{'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; en) Opera 11.00'},{'User-Agent':'Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.2) Gecko/2008092313 Ubuntu/8.04 (hardy) Firefox/3.0.2'},{'User-Agent':'Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.1.15) Gecko/20101027 Fedora/3.5.15-1.fc12 Firefox/3.5.15'},{'User-Agent':'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.551.0 Safari/534.10'},{'User-Agent':'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.2) Gecko/2008092809 Gentoo Firefox/3.0.2'},{'User-Agent':'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/7.0.544.0'},{'User-Agent':'Opera/9.10 (Windows NT 5.2; U; en)'},{'User-Agent':'Mozilla/5.0 (iPhone; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko)'},{'User-Agent':'Opera/9.80 (X11; U; Linux i686; en-US; rv:1.9.2.3) Presto/2.2.15 Version/10.10'},{'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'},{'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9b3) Gecko/2008020514 Firefox/3.0b3'},{'User-Agent':'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16'},{'User-Agent':'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20'},{'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)'},{'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux x86_64; en) Opera 9.60'},{'User-Agent':'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.366.0 Safari/533.4'},{'User-Agent':'Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51'}]return random.choice(user_agent_list)

然后将该脚本放在名为agent_proxy目录中。

接着是主程序,使用多线程以及读取文件的形式来实现Web目录的暴破扫描,最后将扫描出来的结果以HTML文件的超链接的形式展现:

#!/usr/bin/python
#coding=utf-8
import requests
import sys
from Queue import Queue
import threading
from agent_proxy import user_agent_list
from optparse import OptionParserclass DirScanMain:"""docstring for DirScanMain"""def __init__(self, options):self.url = options.urlself.filename = options.filenameself.count = options.countclass DirScan(threading.Thread):"""docstring for DirScan"""def __init__(self, queue,total):threading.Thread.__init__(self)self._queue = queueself._total = totaldef run(self):while not self._queue.empty():url = self._queue.get()#threading.Thread(target=self.msg).start()try:r = requests.get(url=url, headers=user_agent_list.get_user_agent(), timeout=8,)if r.status_code == 200:sys.stdout.write('\r' + '[+]%s\t\t\n' % (url))result = open('result.html','a+')result.write('<a href="' + url + '" target="_blank">' + url + '</a>')result.write('\r\n</br>')result.close()except Exception as e:passdef msg(self):# print self._total,self._queue.qsize()per = 100 - float(self._queue.qsize())/float(self._total) * 100percentage = "%s Finished| %s All| Scan in %1.f %s"%((self._total - self._queue.qsize()),self._total,per,'%')sys.stdout.write('\r'+'[*]'+percentage)def start(self):result = open('result.html','w')result.close()queue = Queue()f = open('./dics/%s'%self.filename,'r')for i in f:queue.put(self.url+i.rstrip('\n'))#total = queue.qsize()threads = []thread_count = int(self.count)for i in range(thread_count):threads.append(self.DirScan(queue,total))for i in threads:i.start()for i in threads:i.join()if __name__ == '__main__':print '''____  _      ____                  |  _ \(_)_ __/ ___|  ___ __ _ _ __  | | | | | '__\___ \ / __/ _` | '_ \ | |_| | | |   ___) | (_| (_| | | | ||____/|_|_|  |____/ \___\__,_|_| |_|'''parser = OptionParser('./web_dir_scan.py -u <Target URL> -f <Dictionary file name> [-t <Thread_count>]')parser.add_option('-u','--url',dest='url',type='string',help='target url for scan')parser.add_option('-f','--file',dest='filename',type='string',help='dictionary filename')parser.add_option('-t','--thread',dest='count',type='int',default=10,help='scan thread_count')(options,args)=parser.parse_args()if options.url and options.filename:# start(options.url,options.filename,options.count)dirscan = DirScanMain(options)dirscan.start()sys.exit(1)else:parser.print_help()sys.exit(1)

运行结果:

后期会使用Django框架编写一个Web目录扫描系统,当然是使用简单的暴破的原理,想着是有一个界面平台来方便操作。

Python安全小工具之Web目录扫描器相关推荐

  1. [网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Python弱口令攻击.自定义字典生成,调用Python的exrex库实 ...

  2. 小米范工具系列之二:小米范 web目录扫描器

    最新版本1.1,下载地址:http://pan.baidu.com/s/1c1NDSVe  文件名scandir,请使用java1.8运行 小米范web目录扫描器主要功能是探测web可能存在的目录及文 ...

  3. python 处理数据小工具_用Python这个小工具,一次性把论文作图与数据处理全部搞定!...

    原标题:用Python这个小工具,一次性把论文作图与数据处理全部搞定! 一入科研深似海-- 随着大学纷纷开学,"防脱发用生姜还是黑芝麻?", 研究僧们又开始为自己所剩无几的头发发愁 ...

  4. 用Python编写小工具下载OSM路网数据

    文章来源于Python大数据分析,作者费弗里 本文对应脚本已上传至Github仓库: https://github.com/CNFeffery/DataScienceStudyNotes[1] 1 简 ...

  5. 有关Python的小工具 - picture

    有关Python的小工具 - picture 读取图片 通过cv2.imread读取图片 通过cv2.imread读取比特流 通过Image.open读取图片 通过io.BytesIO读取比特流 保存 ...

  6. pythonweb扫描器_Python安全工具之web目录扫描

    转载学习 这里为了方便,将收集的UA自己保存成一个文件方便其他脚本直接调用. user_agent_list.py: #!/usr/bin/python #coding=utf-8 import ra ...

  7. python自动翻译小工具_Python实现翻译小工具

    一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面. 二.代码 git源码地址 Python实现翻 ...

  8. 如何用python写小工具_用python写一个录音小工具

    Python的paramiko,wxPython库的应用 Sound eXchange 命令行 需求 最近在给一个做语音识别的项目做QA工作.众所周知,此类人工智能方面的项目都需要一些数据收集的工作. ...

  9. python 上传excel_简历批量合并Python+VBA小工具

    每年的校招,才是对招聘系统体验的真正大考. 如何帮HR快速标记.筛选成千上万的简历? 如何快速应答同学们的问询? 群面如何签到?如何自动分组? 怎样让候选人清楚面试流程与候场时间? 如何让面试官方便地 ...

最新文章

  1. 一次看懂RIP协议。
  2. SQL SERVER 2012 OBJECT_ID
  3. 3d 根据弧长算角度_三分钟带你了解三姆森3D玻璃厚度及轮廓度检测
  4. C语言课后习题(28)
  5. html点击文字展开图片,DIV CSS鼠标经过悬停在图片上时图片上方显示文字
  6. VMware黑屏解决方法
  7. MSP430+CC2500低功耗注意细节
  8. 记阿里电话面试失败过程
  9. Eclipse:source 1.5 中不支持 diamond 运算符
  10. 马云有自己的银行,为什么还要贷款?
  11. Oracle OCA、OCP、OCM认证科目及考试内容
  12. spring 中事物的使用
  13. Texture tiling
  14. Win10 曝激活失效问题,专业版突变家庭版;GitHub 项目库破亿
  15. java socket分包粘包 代码_分享java中处理socket通信过程中粘包情况的实例代码
  16. Description Resource Path Location Type The project cannot be built until build path errors are reso
  17. 销售漏斗是什么?有什么作用!
  18. 事件知识图谱项目整理
  19. UVA 11426 GCD - Extreme (II) (欧拉函数)
  20. 汉语言文学考研学校c等20个,汉语言文学考研江苏省内哪个学校好考

热门文章

  1. JDK 14如期发布,16个新特性快速预览
  2. WICC2021召开在即 商汤科技将展示AI“新能源”
  3. 输入的英文字母隔得很开
  4. 在 k8s 中配置域名解析
  5. ANSI 9.8 , ANSI 9.9和ANSI X9.19
  6. 成功解决:[object Object]
  7. javascript鼠标点击实现改变CSS样式
  8. Android 13 适配指南~
  9. PHP之MySQL笔记4
  10. java3d点线面_3D游戏与计算机图形学中的数学方法-点线面