利用Python实现子域名简单收集

news2025/2/23 13:09:45

免责申明

        本文仅是用于学习研究子域名信息收集,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】及其所在国家地区相关法规内容 如您继续阅读该文章即表明您默认遵守该内容。

一、需求描述

        正常我们对子域名信息进行主动收集的时候是对一个个子域名进行ping之类的方法收集,查看是否有对应的IP地址返回;这样的话会很慢,效率太低;我们希望可以提高效率可以让程序自动获取到有用的子域名内容。

二、实现思路

        我们可以使用Python程序结合子域名字典进行枚举获取;但是使用字典枚举获取有局限【即能获取到多少子域名信息,完全取决于字典的覆盖程度】

        请注意:使用程序进行自动获取子域名内容的时候会造成较大的流量,可能会触发目标系统的安全产品的警告。

三、简单子域名字典枚举方法获取

3.1、获取子域名字典

GitHub - TheKingOfDuck/fuzzDicts: You Know, For WEB Fuzzing ! 常用的字典。You Know, For WEB Fuzzing ! 日站用的字典。. Contribute to TheKingOfDuck/fuzzDicts development by creating an account on GitHub.icon-default.png?t=O83Ahttps://github.com/TheKingOfDuck/fuzzDicts

3.2、简单的Python配合字典收集子域名

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

"""
-------------------------------------------------------------------------------
Title:"网安渗透" 项目
	主题:子域名信息收集
Description:
	功能:
	  1、根据主域名与子域名字典获取到所有可用的域名
Date:2024
Version:0.1
Author:Coffee
Environment:Python 3.x
Modify Recoder:
-------------------------------------------------------------------------------
"""
import socket
import os
import sys
import time

'''
    收集域名信息
    mainDomain:主域名(如:baidu.com)
    domainDic:子域名字典(子域名字典内容如:www、shop、it等)
    saveDomainFile:保存子域名与主域名的文件
'''
def CollectSubDomain(mainDomain,domainDic,saveDomainFile):
    for subDomain in open(domainDic):
        subDomain = subDomain.replace('\n', '')
        fullDomain = f'{subDomain}.{mainDomain}'
        try:
            domainIP = socket.gethostbyname(fullDomain)
            fullDomainAndIp = f'{fullDomain}-->{domainIP}'
            print(fullDomainAndIp)
            saveDomainFile.write(fullDomainAndIp+"\n")
            time.sleep(0.5)
        except Exception as e:
            pass
    saveDomainFile.close()

'''
    使用参数收集子域名信息
    使用方法示例:CollectSubDomainName.py -dd dic.txt -md baidu.com
'''
def usePara_CollectSubDomain():
    realPara = sys.argv
    usePara = ['-dd','-md']
    domainDic = getCurNextData(usePara[0],realPara)
    print(f"域名字典:{domainDic}")
    mainDomain = getCurNextData(usePara[1], realPara)
    print(f"主域名:{mainDomain}")
    f = open(f'{mainDomain}.txt', 'a')
    CollectSubDomain(mainDomain,domainDic,f)

'''
    获取当前内容的下一个数据
    curData:当前数据
    ListData:列表
'''
def getCurNextData(curData,ListData):
    if curData in ListData:
        nextData=ListData[ListData.index(curData)+1]
        return nextData


if __name__ == '__main__':
    if len(sys.argv) == 5:
        usePara_CollectSubDomain()
    else:
        mainDomain = input("请输入需要收集的主域名字(如:coffee.com):")
        domainDic = input("请输入需要使用的子域名字典(如:c:\\\\dic.txt):")
        if not mainDomain or not domainDic:
            exit(0)
        else:
            f = open(f'{mainDomain}.txt', 'a')
            CollectSubDomain(mainDomain,domainDic,f)

 

四、其他关于子域名信息收集的资料

信息收集系列|子域名收集姿势总结 - FreeBuf网络安全行业门户icon-default.png?t=O83Ahttps://www.freebuf.com/vuls/328801.html史上最全的子域名搜集方法(证书透明度/DNS记录/威胁情报/代码仓库/dns暴力破解/各种细节)背景信息收集在安全测试当中有相当重要的作用,信息收集的程度决定了安全测试的广度和深度,而在信息收集中,初期的子域名收集尤为重要。本文将从主动信息收集和被动信息收集两个维度阐述子域名收集的方法,并给出详细的网址,方便大家查询。子域名收集一、被动信息收集 利用Google提出的证书透明度(Certifiicon-default.png?t=O83Ahttps://www.cnblogs.com/bighammerdata/p/13268624.html子域名探测方法大全子域名探测方法 在线接口 暴力枚举 搜索引擎 Certificate Transparency(证书透明) Subject Alternate Name (SAN) - 主题备用名称 Public datasets(公开数据集) 信息泄露 内容解析(HTML,JavaScript,文件) DNS解析icon-default.png?t=O83Ahttps://www.cnblogs.com/forforever/p/14197630.html红蓝对抗之域名搜集方法总结 - 博客 - 腾讯安全应急响应中心 腾讯安全应急响应中心,Tencent Security Response Center,TSRCicon-default.png?t=O83Ahttps://security.tencent.com/index.php/blog/msg/161

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

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

相关文章

k8s,进一步理解Pod

比如,凡是调度、网络、存储,以及安全相关的属性,基本上是Pod 级别的。 这些属性的共同特征是,它们描述的是“机器”这个整体,而不是里面运行的“程序”。比如,配置这个“机器”的网卡(即&#…

Unity 使用LineRenderer制作模拟2d绳子

效果展示: 实现如下: 首先,直接上代码: using System.Collections; using System.Collections.Generic; using UnityEngine;public class LineFourRender : MonoBehaviour {public Transform StartNode;public Transform MidNod…

博物馆导览系统方案(一)背景需求分析与核心技术实现

维小帮提供多个场所的室内外导航导览方案,如需获取博物馆导览系统解决方案可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~撒花! 一、博物馆导览系统的背景与市场需求 在数字化转型的浪潮中,博物馆作为文化传承和知…

14.在 Vue 3 中使用 OpenLayers 自定义地图版权信息

在 WebGIS 开发中,默认的地图服务通常会带有版权信息,但有时候我们需要根据项目需求自定义版权信息或添加额外的版权声明。在本文中,我们将基于 Vue 3 的 Composition API 和 OpenLayers,完成自定义地图版权信息的实现。 最终效果…

详解下c语言中的typedef

相信学习过c语言的很多同学都对typedef很陌生,感觉它离自己很遥远,自己很少用到。但实际上,我们看很多地方,包括很多大神级别的代码中,它却又经常使用。今天我们就详细描述下它,使我们对它有一个更深的认识…

19. Three.js案例-创建一个带有纹理映射的旋转平面

19. Three.js案例-创建一个带有纹理映射的旋转平面 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染场景的主要类。它利用 WebGL 技术在浏览器中绘制 3D 图形。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersobj…

Ensemble Learning via Knowledge Transfer for CTR Prediction 论文阅读

Abstract:点击率(CTR)预测在推荐系统和网络搜索中起着关键作用。虽然许多现有的方法利用集成学习来提高模型性能,但它们通常将集成限制在两个或三个子网络中,很少探索更大的集成。在本文中,我们研究了更大的集成网络&a…

苍穹外卖项目练习总结

做这个练习项目已经接近两年之久,现在拿出来复习一遍,主要就是里面处理问题的流程,以及整体思考的逻辑需要重新回顾一遍,后续会逐渐总结这一段时间以来学习到的知识。 项目整体包含两部分,一个是管理端,一…

数学拯救世界(三)———破魔

题目一: 还记不记得,出现带分数的话可以怎么办? 题目二: 还记不记得,昨天讲的重叠数 题目三: 提公因数,抓住问题本质 题目四:

JAVA |日常开发中连接Sqlite数据库详解

JAVA |日常开发中连接Sqlite数据库详解 前言一、SQLite 数据库概述1.1 定义与特点1.2 适用场景 二、Java 连接 SQLite 数据库的准备工作2.1 添加 SQLite JDBC 驱动依赖2.2 了解 JDBC 基础概念 三、建立数据库连接3.1 代码示例3.2 步骤解析 四、执行 SQL 语句4.1 创建…

对 JavaScript 说“不”

JavaScript编程语言历史悠久,但它是在 1995 年大约一周内创建的。 它最初被称为 LiveScript,但后来更名为 JavaScript,以赶上 Java 的潮流,尽管它与 Java 毫无关系。 它很快就变得非常流行,推动了 Web 应用程序革命&…

解谜类游戏《迷失岛2》等如何抽象出一套通用高效开发框架?

解谜类游戏以精妙的谜题设计和引人入胜的故事叙述为特点,考验着玩家的智慧与观察力。《迷失岛2》与《南瓜先生2九龙城寨》正是这一领域的佳作。游戏以独特的艺术风格和玩法设计吸引了大量玩家,而它们背后隐藏着一套强大的框架。 上海胖布丁游戏的技术总…

CID引流电商

ClickID技术是基于多家媒体平台开发的电商引流服务,通过媒体提供的宏参数,间接解决电商平台订单数据的回传问题,帮助账户收集到极致精准的数据模型,搭建不同媒体往各平台引流的桥梁。简单来说就是通过ClickID数据监测到另外一个平…

保姆级教程Docker部署Redis镜像

目录 1、创建挂载目录和配置文件 2、运行Redis镜像 3、查看redis运行状态 1、创建挂载目录和配置文件 # 创建宿主机Redis配置文件存放目录 sudo mkdir -p /data/docker/redis/conf# 创建Redis配置文件 cd /data/docker/redis/conf sudo touch redis.conf 到Github上找到Redi…

如何将快捷指令添加到启动台

如何将快捷指令添加到启动台/Finder/访达(Mac) 1. 打开快捷指令创建快捷指令 示例创建了一个文件操作测试的快捷指令。 2. 右键选择添加到程序坞 鼠标放在待添加的快捷指令上。 3. 右键添加到访达 鼠标放在待添加的快捷指令上。 之后就可以在启…

【AI学习】Mamba学习(二十):Mamba是一种线性注意力

论文《Demystify Mamba in Vision: A Linear Attention Perspective 》从线性注意力的视角,对Mamba 进行了阐释。 论文名称:Demystify Mamba in Vision: A Linear Attention Perspective (Arxiv 2024.05) 论文地址:https://arxiv.org/pdf/24…

Bootstrap-HTML(三)Bootstrap5列表组全解析

Bootstrap-HTML(三)Bootstrap5列表组全解析 前言(一)HTML 列表基础回顾1.无序列表2.有序列表3.定义列表 二、无样式的有序列表和无序列表内联列表 三、Bootstrap5 列表组1.基础的列表组2.设置禁用和活动项3.链接项的列表组4.移除列…

【CSP CCF记录】202212-2第28次认证 训练计划

题目 样例1输入 10 5 0 0 0 0 0 1 2 3 2 10 样例1输出 1 1 1 1 1 10 9 8 9 1 样例1解释 五项科目间没有依赖关系,都可以从第 1 天就开始训练。 10天时间恰好可以完成所有科目的训练。其中科目 1 耗时仅 1天,所以最晚可以拖延到第 10 天再开始训练&…

java 18 异常处理

一,异常概念 基本概念Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类: 1)Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部…