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

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

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

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

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

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

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#引用库
import requests

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 = headers
            requests.get(url)
            #输出爆破成功的子域名
            print(f"successful! [*]{url}")
        except requests.ConnectionError:
            print("error")
            pass

if __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 = headers
            requests.get(url,proxies=proxies)
            #输出爆破成功的子域名
            print(f"successful! [*]{url}")
        except requests.ConnectionError:
            print("error")
            pass

if __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.mfbz.cn/a/296624.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI数字人国内人工智能产业发展趋势

随着科技的不断进步,人工智能(Artificial Intelligence,简称AI)已成为当今社会的热门话题。作为一种复杂而高级的技术,人工智能在国内发展势头迅猛。本文将探讨AI数字人国内人工智能产业的发展趋势。 首先&#xff0c…

科锐16位汇编学习笔记01汇编基础和debug使用

为什么学习16位汇编? 16位操作指令最多能够操作两个字节,且更能够体现出与硬件的交互。16位下的指令和32位汇编的指令差不多。16位汇编的指令在32位一样使用.要学好汇编必须要了解一点点硬件知识,16汇编是直接操作硬件,32位汇编指令跟硬件隔离了 硬件运…

simulink代码生成(六)——中断向量模块的配置

假如系统中存在多个中断,需要合理的配置中断的优先级与中断向量表;在代码生成中,要与中断向量表对应;中断相关的知识参照博客: DSP28335学习——中断向量表的初始化_中断向量表什么时候初始化-CSDN博客 F28335中断系…

目标检测-One Stage-YOLOv2

文章目录 前言一、YOLOv2的网络结构和流程二、YOLOv2的创新点预处理网络结构训练 总结 前言 根据前文目标检测-One Stage-YOLOv1可以看出YOLOv1的主要缺点是: 和Fast-CNN相比,速度快,但精度下降。(边框回归不加限制)…

24年初级会计资格考试报名信息采集流程共10大步骤,千万不要搞错

2024年初级会计资格考试报名信息采集流程共10大步骤,不要搞错哦; 第一步:输入证件号、点击登录 第二步:阅读采集须知 第三步:填写个人信息(支付宝搜索"亿鸣证件照"或者微信搜索"随时照&q…

uniapp 日历组件

我们的需求是显示当前月和下个月的排班表 引入 uniapp 日历组件 uni-calendar 做法有两种&#xff0c;一种是直接去修改组件&#xff0c;还有就是文档中提供的 selected 方法 修改组件的就不写了 <uni-calendar :lunar"true" :selected"selected" :in…

2023 hnust 湖南科技大学 大四上 计算机图形图像技术 课程 期末考试 复习资料

计算机图形图像技术复习资料 前言 改编自&#xff1a;https://blog.csdn.net/Liu_Xin233/article/details/135232531★重点&#xff0c;※补充github 考试题型 简述题&#xff08;10分4题&#xff0c;共40分&#xff09; 第1章的基本内容三维观察流水线中的基本概念与理解三…

使用Python给图片加水印(通过OpenCV和Pillow实现,内含完整代码链接)

from PIL import Image, ImageFont, ImageDraw, ImageEnhance, ImageChops import cv2 import math import numpy as npdef crop_image(im):"""裁剪图片边缘空白"""bg Image.new(mode"RGBA", sizeim.size)bbox ImageChops.differenc…

ASPICE4.0标准参考模型

aspice4.0 已经发布了&#xff0c;最近正在规划公司开发流程向4.0升级&#xff0c;研究对比了下4.0和3.1的改变&#xff0c;整体来说4.0减少了很多3.1不实用的过程&#xff0c;增加了硬件过程&#xff0c;机器学习过程&#xff0c;过程细节叶更加贴近项目的实际需求&#xff0c…

【Python特征工程系列】教你利用逻辑回归模型分析特征重要性(源码)

这是Python特征工程系列原创文章&#xff0c;我的第191篇原创文章。 一、问题 应用背景介绍&#xff1a; 如果有一个包含数十个甚至数百个特征的数据集&#xff0c;每个特征都可能对你的机器学习模型的性能有所贡献。但是并不是所有的特征都是一样的。有些可能是冗余的…

【年终总结系列 2023】新起点,同时追寻更高的起点

什么是攀登者&#xff0c;用一个场景来概括就是&#xff1a;经常弯腰低头手脚并用向上攀爬&#xff0c;待到山的顶峰后终于可以舒展一下身体&#xff0c;但若舒展的时间过长便会觉得无聊&#xff0c;此时向远处眺望&#xff0c;发现了更高的山峰&#xff0c;便又充满了激情。对…

上门洗车小程序开发源码,预约上门或到店洗车

预约上门洗车小程序&#xff0c;可以预约上门服务&#xff0c;也可以预约到店洗车&#xff0c;可以在线开通会员&#xff0c;领优惠券&#xff0c;分销推广。门店商家端可以管理订单&#xff0c;查看收益。 该系统分为三个端&#xff1a;用户端、商家端、管理后台。 一 用户端…

数据结构 模拟实现Stack栈(数组模拟)

目录 一、栈的概念 二、栈的接口 三、栈的方法实现 &#xff08;1&#xff09;push方法 &#xff08;2&#xff09;pop方法 &#xff08;3&#xff09;peek方法 &#xff08;4&#xff09;size方法 ​编辑 &#xff08;5&#xff09;empty方法 四、最终代码 一、栈的…

我们公司内应届生身上的6个共性问题

如题目&#xff0c;本文主要是根据我们公司内真实的应届生身上共同的问题&#xff0c;总结而来。 1. 一天会做很多工作&#xff1a;会跟很多人对接&#xff0c;会一会忙这个一会忙哪个 现象&#xff1a; 说实话&#xff0c;这种情况&#xff0c;我看着都替她着急。自己正在解…

【2058错误】sql软件链接数据库 mysql 报错误2058

【2058错误】sql软件链接数据库报错误2058 操作&#xff1a;仅需在mysql登陆之后运行一行代码即可&#xff1a;注意1.后面必须是%&#xff0c;而不是别人说的 localhost2.此处的password是你自己的mysql密码。 操作&#xff1a;仅需在mysql登陆之后运行一行代码即可&#xff1a…

jQuery页面整屏滚动

效果展示 jQuery页面整屏滚动 Html代码块 <div id"fullpage" class"fullpage-index"><!-- index01 --><div class"indexitem index01 section" id"#page1"><img src"img/img01.jpg"/></div>…

关于kthread_stop的疑问(linux3.16)

线程一旦启动起来后&#xff0c;会一直运行&#xff0c;除非该线程主动调用do_exit函数&#xff0c;或者其他的进程调用kthread_stop函数&#xff0c;结束线程的运行。 之前找销毁内核线程的接口时&#xff0c;发现了kthread_stop这个接口。网上说这个函数能够销毁一个内核线程…

124 二叉树中的最大路径和

又是一个hard题目&#xff0c;其实我大概有想到要去dfs遍历节点&#xff0c;当时不知道怎么从一个叶子结点开始遍历。其实只需要从根节点出发&#xff0c;看看左右节点加在一起是否最大能不能作为一个路径&#xff0c;但是对外这是要不左节点上来要不右节点上来&#xff0c;不能…

LeetCode(40)组合总和Ⅱ⭐⭐

给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 示例 1: 输入: candidates [10,1,2,7,6,…

热图分析(这个热力图代表的是不同描述符与pIC50之间的皮尔逊相关系数。)

案例一&#xff1a; 这个热力图代表的是不同描述符与pIC50之间的皮尔逊相关系数。pIC50是一种表示化合物在生物学测定中抑制效果的负对数IC50值&#xff0c;它通常用于药物发现和评估中&#xff0c;用来量化化合物对特定靶标的抑制能力。 要分析这个热力图&#xff0c;你需要关…
最新文章