Python武器库开发-武器库篇之子域名扫描器开发(四十一)

Python武器库开发-武器库篇之子域名扫描器开发(四十一)

在我们做红队攻防或者渗透测试的过程中,信息收集往往都是第一步的,有人说:渗透的本质就是信息收集,前期好的信息收集很大程度上决定了渗透的质量和攻击面,本文将教会大家如何开发一个子域名扫描器进行主动信息收集。

对于一个网站的URL,列如:https://www.baidu.com一般有以下几个部分组成:

  1. 协议
  2. 子域
  3. 域名
  4. 顶级域名

如果我们要对一个子域名进行爆破,那么我们就需要修改子域这一个部分,然后去观察返回的响应包,我们都知道状态码 200 代表成功,所以我们在子域名进行爆破的过程中去判断返回包的状态码是不是200就能判断出当前爆破的这个域名是否存在。现在我们开发子域名扫描器的核心思想已经非常清楚了。当然说道爆破肯定就离不开字典了,所以大家也请自己去准备一个适合子域名爆破的字典。

首先我们来做一个初版的子域名扫描器,内容代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-#引用库
import requestsdef domain_scan(domain_name,sub_names):#循环读取子域名字典for sub in sub_names:#添加请求头headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36"}url = f"https://{sub}.{domain_name}"try:requests.head = headersrequests.get(url)#输出爆破成功的子域名print(f"successful! [*]{url}")except requests.ConnectionError:print("error")passif __name__ == '__main__':#获取要爆破的域名dom_name = input("enter the domain name:")with open("subdomain.txt") as file:#读取字典文件sub_name = file.read()#区分换行sub_dom = sub_name.splitlines()print("文件中存在的子域名数量:{}".format(len(sub_dom)))print("文件子域名列表:{}".format(sub_dom))domain_scan(dom_name,sub_dom)

代码运行的实际效果图如下:

在这里插入图片描述

首先我们去输入我们想要爆破的域名,比如baidu.com

在这里插入图片描述

然后他将从字典中选出爆破成功的子域名并打印输出出来,没有的则输出 error

在这里插入图片描述

当然在实际的渗透过程中,我们都需要添加代理池去做到隐蔽自己的目的,所以接下来开发一个添加了代理池的子域名扫描器版本,代码内容如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-#引用库
import requests# 添加你的代理池的隧道域名:端口号
tunnel = "xxx.com:xxxx"# 修改你的用户名和密码
username = "username"
password = "password"
proxies = {"http": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": tunnel},"https": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": tunnel}
}def domain_scan(domain_name,sub_names):#循环读取子域名字典for sub in sub_names:#添加请求头headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36"}url = f"https://{sub}.{domain_name}"try:requests.head = headersrequests.get(url,proxies=proxies)#输出爆破成功的子域名print(f"successful! [*]{url}")except requests.ConnectionError:print("error")passif __name__ == '__main__':#获取要爆破的域名dom_name = input("enter the domain name:")with open("subdomain.txt") as file:#读取字典文件sub_name = file.read()#区分换行sub_dom = sub_name.splitlines()print("文件中存在的子域名数量:{}".format(len(sub_dom)))print("文件子域名列表:{}".format(sub_dom))domain_scan(dom_name,sub_dom)

这串代码中只需要你配置上自己的代理池的IP和端口,还有账户的用户名和密码,就可以启用代理池配置去扫描子域名了。代码效果图如下:

在这里插入图片描述

如果想要加快爆破的速度的话,那么也可以添加多线程进行同时爆破,这里就不多演示了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/329584.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言基础知识(6):UDP网络编程

UDP 是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在 UDP 的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。 1.UDP协议的主要特点: &#xf…

【C++】STL 算法 ⑥ ( 二元谓词 | std::sort 算法简介 | 为 std::sort 算法设置 二元谓词 排序规则 )

文章目录 一、二元谓词1、二元谓词简介2、 std::sort 算法简介3、 代码示例 - 为 std::sort 算法设置 二元谓词 排序规则 一、二元谓词 1、二元谓词简介 " 谓词 ( Predicate ) " 是一个 返回 布尔 bool 类型值 的 函数对象 / 仿函数 或 Lambda 表达式 / 普通函数 , …

(06)金属布线——为半导体注入生命的连接

01、半导体的核心——“连接” 在上几篇文章中,我们详细讲解了氧化、光刻、刻蚀、沉积等工艺。经过上述工艺,晶圆表面会形成各种半导体元件。半导体制造商会让晶圆表面布满晶体管和电容(Capacitor);而代工厂或CPU制造商则会让晶圆底部排列鳍式场效电晶体(FinFET)等三维…

SSD固态硬盘数据修复方案介绍

这么多故障的可能,那么固态硬盘SSD的数据修复,到底是否有办法呢?我们这里介绍两种尝试修复的方式,不能保证一定会成功。在你误删除一些文件的时候,可以尝试下,市场也有也有很多的修复软件。 方式1:采用修复…

最新版付费进群系统源码 /同城定位付费进群源码 /自带定位完整版/后台分销站点

源码介绍: 最新版付费进群系统源码 ,它是同城定位付费进群源码,而且自带定位完整版和后台分销站点。 看到有些人分享一些虚假的内容或者缺少文件的内容。现在分享完整给大家,功能是完整的。它是同城定位付费进群源码。 功能&am…

在Raspberry Pi Zero W中配置TFT LCD Framebuffer驱动

TFT LCD Framebuffer驱动配置 文章目录 TFT LCD Framebuffer驱动配置1、硬件准备2、软件配置2.1 启用SPI驱动2.2 TFT LCD设备驱动树配置 本文将以ILI9341 LCD为例,将详细介绍如何配置TFT LCD的Framebuffer驱动。 1、硬件准备 Raspberry Pi Zero W开发板一个&#x…

修改Gitee用户名

首先进入首页,点击右上角下拉列表中的账号设置 只想改姓名的话,就只要改下下面这里 还想把个人空间地址改了的话还要改下面这里

java基于SSM的二手交易平台设计与开发论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本二手交易平台就是在这样的大环境下诞生,其可以帮助使用者在短时间内处理完毕庞大的数据信息&am…

智慧医院预约及支付平台—智慧支付

医保支付流程 自费支付流程 智慧医院支付业务介绍 社保卡绑定(身份认证) 认证方案:银行身份已验证客户,可通过本人银行登记的手机号码登录医院APP后,在完善APP注册身份信息时,将相关信息发送苏州银行,由银行核对客户身份信息正确性并将社保卡绑定本人手机。核实后的身份…

2024阿里云优惠活动有哪些?

2024年阿里云优惠活动大全,包括阿里云服务器优惠活动清单、配置价格表、域名优惠活动、阿里云建站活动、阿里云优惠代金券免费领取、对象存储OSS活动、企业邮箱优惠、无影云电脑优惠、CDN特惠等等,阿里云百科aliyunbaike.com分享2024阿里云优惠活动大全_…

解决ImportError: Failed to import test module: sys.__init__

解决ImportError: Failed to import test module: sys.init 背景 学习通过文件夹执行测试脚本时,出现了错误:ImportError: Failed to import test module: sys.__init__ 解决过程 根据报错信息:sys is not a package大胆猜测可能是文件名…

算法第十三天-组合总和Ⅱ

组合总和Ⅱ 题目要求 解题思路 按顺序搜索,设置合理的变量,在搜索的过程中判断是否会出现重复集结果。重点理解对输入数组排序的作用和参考代码中 大剪枝和小剪枝 的意思 这道题域上一问的区别在于: 第39题:candidates中的数字…