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.mzph.cn/news/604311.shtml

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

相关文章

竞赛练一练 第23期:NOC大赛每日一练,python题目刷题第8天,包含答案解析

题目来自:NOC 大赛创客智慧编程赛项Python 复赛模拟题(二) NOC大赛创客智慧编程赛项Python 复赛模拟题(二) 第一题: 编写一个成绩评价系统,当输入语文、数学和英语三门课程成绩时,输出三门课程总成绩及其等级。 (1)程序提示用户输入三个数字,数字分别表示语文、数学、…

Springboot进行多环境配置的2种方式

本文来说下Springboot使用Spring Profile和Maven Profile进行多环境配置 文章目录 概述Spring Profile多环境主配置文件与不同环境的配置文件 Maven ProfileProfile配置资源过滤 Spring Profile与Maven Profile具体使用 概述 原因 在实际的项目上,一般会分三种环境d…

Java学习苦旅(二十二)——MapSet

本篇博客将详细讲解Map和Set。 文章目录 搜索概念模型 MapMap.Entry<K, V>Map的常用方法说明TreeMap和HashMap的区别 Set常用方法说明TreeSet和HashSet的区别 结尾 搜索 概念 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例…

JSUDO|加速度与阿里云合作云产品

电讯&#xff1a;深圳市加速度软件开发有限公司【加速度jsudo】&#xff0c;与阿里云计算有限公司&#xff08;简称“阿里云”&#xff09;达成合作&#xff0c;双方将在电商、企业管理等应用软件领域就云产品和应用软件更深层次合作。 加速度软件长期以来&#xff0c;一直与阿…

SpringBoot2基础

SpringBoot2 一、初始化项目 ①、创建project ②、构建maven项目 如果选项里没有8的&#xff0c;可以最顶上镜像换成阿里巴巴的&#xff1a;https://start.aliyun.com/ 直接在main函数运行就行 二、SpringBoot入门 1、复制工程 原则 保留工程基础结构抹掉原始工程痕迹 做个…

K8s-应用数据

应用数据 1 应用数据解析 k8s应用数据类型和步骤解析 k8s如何使用数据功能 k8s使用各种数据类型的配置 2 应用数据实践 emptyDir实践 资源对象文件内容 apiVersion: v1 kind: Pod metadata:name: sswang-emptydir spec:containers:- name: nginx-webimage: kubernetes-reg…

Java线程同步机制

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天咱们来聊聊并发编程&#xff0c;咱们经常听说并行、并发这些词&#xff0c;特别是在处理大量数据、高用户负载时&#xff0c;这些概念就显得尤为重要了。为什么呢&#xff1f;因为并发编程可以帮助咱们的应用程序更有效…

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

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

[AutoSar]基础部分 RTE 06 对runnable的触发和SWC的影响

目录 关键词平台说明一、runnable二、RTE的event2.1Mode类型event2.2周期触发类型2.3 数据交互触发 三、internal runnable value四、专属运行区指定五、per_instance memory 关键词 嵌入式、C语言、autosar、Rte 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商T…

UG装配-动画制作

制作装配动画用到的命令是序列 制作动画前&#xff0c;先将所有约束取消 当我们在装配导航器中装配好产品后&#xff0c;可以在序列中编辑生产动态装配或爆炸动画&#xff1b; 需要注意的是&#xff0c;如果是希望创建装配或爆炸动画&#xff0c;需要先将所有约束取消&#…

mac版viso软件 流程图软件omnigraffile

OmniGraffle 是一款由 The Omni Group 开发的绘图工具&#xff0c;主要用于创建各种类型的图表、流程图、组织结构图、网站地图等。它提供了丰富的绘图工具和功能&#xff0c;包括形状、线条、文本、颜色、样式等&#xff0c;可以帮助用户轻松地创建出精美的图表和图形。 OmniG…

Micro-app 微前端框架demo介绍

Micro-app 框架 1、框架安装 npm i micro-zoe/micro-app --save2、子应用对应的view页面 <template><div><!-- name(必传)&#xff1a;应用名称url(必传)&#xff1a;应用地址&#xff0c;会被自动补全为http://localhost:3000/index.htmlbaseroute(可选)&…

react+AntDesign 之 pc端项目案例

1.环境搭建以及初始化目录 CRA是一个底层基于webpack快速创建React项目的脚手架工具 # 使用npx创建项目 npx create-react-app react-jike# 进入到项 cd react-jike# 启动项目 npm start2.安装SCSS SASS 是一种预编译的 CSS&#xff0c;支持一些比较高级的语法&#xff0c;…

3D点云上的深度学习综述

1 Title Deep Learning for 3D Point Clouds: A Survey&#xff08;Yulan Guo; Hanyun Wang; Qingyong Hu; Hao Liu; Li Liu; Mohammed Bennamoun&#xff09;【IEEE Transactions on Pattern Analysis and Machine Intelligence 2020】 2 Conclusion Deep learning on point…

Android开发编程从入门到精通,安卓技术从初级到高级全套教学

一、教程描述 本套教程基于JDK1.8版本&#xff0c;教学内容主要有&#xff0c;1、环境搭建&#xff0c;UI布局&#xff0c;基础UI组件&#xff0c;高级UI组件&#xff0c;通知&#xff0c;自定义组件&#xff0c;样式主题&#xff1b;2、四大组件&#xff0c;Intent&#xff0…

(九)One-Wire总线-DS18B20

文章目录 One-Wire总线篇复位和应答读/写0&#xff0c;1 DS18B20篇原理图概述最主要特性几个重要的寄存器&#xff08;部分要掌握&#xff09;存储有数字温度结果的2个字节宽度的温度寄存器寄存器描述&#xff1a;寄存器说明&#xff1a; 一个字节的过温和一个字节的低温&#…

msckf_vio在ubuntu20.04中的编译

1.新建catkin workspace文件夹&#xff0c;并在其中新建src文件夹&#xff0c;并将源码clone至src内。 源码地址&#xff1a;https://github.com/KumarRobotics/msckf_vio 目录层级示意如下&#xff0c;build和devel不必新建&#xff0c;后续指令会自动新建。 2. 在编译之前…

Python 面向对象之反射

Python 面向对象之反射 【一】概念 反射是指通过对象的属性名或者方法名来获取对象的属性或调用方法的能力反射还指的是在程序额运行过程中可以动态获取对象的信息(属性和方法) 【二】四个内置函数 又叫做反射函数 万物皆对象&#xff08;整数、字符串、函数、模块、类等等…

第02章_变量与进制

第02章_变量与进制 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 本章专题脉络 1、关键字(keyword) 定义&#xff1a;被C语言赋予了特殊含义&#xff0c;用做专门用途的字符串&#xff08;或单…

力扣:438. 找到字符串中所有字母异位词 题解

Problem: 438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 预备知识解题思路复杂度Code其它细节推荐博客或题目博客题目滑动窗口哈希表 预备知识 此题用到了双指针算法中的滑动窗口思想&#xff0c;以及哈希表的运用。c中是unordered_map。如果对此不了解的u…