该工具第一是查询执行参数-a Search xxx.com第二是爆破-a Blast domain wordlist,工具同样可以使用DNS域名的枚举,和上面的区别就在于该方法使用了DNS迭代查询.

Web子域名查询: 该工具第一是查询执行参数-a Search xxx.com第二是爆破-a Blast domain wordlist

import requests
import re,linecache,argparsehead={'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}def Banner():print("  _          ____  _                _    ")print(" | |   _   _/ ___|| |__   __ _ _ __| | __")print(" | |  | | | \___ \| '_ \ / _` | '__| |/ /")print(" | |__| |_| |___) | | | | (_| | |  |   < ")print(" |_____\__, |____/|_| |_|\__,_|_|  |_|\_\\")print("       |___/                             \n")print("E-Mail: me@lyshark.com")# 查询子域名
def SearchDomain(domain):url = "https://crt.sh/?q=" + domaintry:req = requests.get(url=url,headers=head,timeout=10)result = re.findall('<TD>(.*?)</TD>\n    <TD><A',req.text,re.S)for item in result:print(item)except Exception:passdef VisitWeb(prefix,domain):try:url = "https://{}.{}".format(prefix,domain)ret = requests.get(url=url, headers=head, timeout=1)if(ret.status_code == 200):return 1else:return 0except:return 0# 爆破子域名
def BlastWeb(domain,wordlist):forlen = len(linecache.getlines(wordlist))fp = open(wordlist,"r+")for i in range(0,forlen):main = str(fp.readline().split()[0])if VisitWeb(main, domain) != 0:print("旁站: {}.{} 存在".format(main,domain))if __name__ == "__main__":Banner()def RunCMD(argc, args):if (argc == "Search"):SearchDomain(args[0])elif (argc == "Blast"):SubDomain = args[0]WordList = args[1]BlastWeb(SubDomain,WordList)Usage = "[*] Usage : main.py -a [Search | Blast] xxx.com"parser = argparse.ArgumentParser(usage=Usage)parser.add_argument("-a",dest="RunCMD",help="查询子域名命令")args = parser.parse_args()if args.RunCMD:argc = args.RunCMDRunCMD(argc,args)else:parser.print_help()

通过DNS爆破子域名: 该工具同样可以使用DNS域名的枚举,和上面的区别就在于该方法使用了DNS迭代查询.

import threading
import argparse
from queue import Queue
import dns.resolverclass BlastDNSDomain(threading.Thread):def __init__(self,queue,result):threading.Thread.__init__(self)self._queue = queueself.result = resultdef run(self):while not self._queue.empty():SubDomain = self._queue.get_nowait()try:result =dns.resolver.query(SubDomain,'A')if result.response.answer:self.result.append(SubDomain)print("[+] {}".format(SubDomain))except Exception:passdef Banner():print("  _          ____  _                _    ")print(" | |   _   _/ ___|| |__   __ _ _ __| | __")print(" | |  | | | \___ \| '_ \ / _` | '__| |/ /")print(" | |__| |_| |___) | | | | (_| | |  |   < ")print(" |_____\__, |____/|_| |_|\__,_|_|  |_|\_\\")print("       |___/                             \n")print("E-Mail: me@lyshark.com")if __name__ == "__main__":Banner()Usage = "main.py -d xxx.com -w dict.log -t 5"parser = OptionParser(usage=Usage)parser.add_argument("-d", "--domain", dest="Domain", help="Specify subdomain format")parser.add_argument("-w", "--wordlist", dest="WordList", help="Specify a dictionary file")parser.add_argument("-t", "--ThreadCount", dest="ThreadCount", help="Specify the number of execution threads")args = parser.parse_args()if args.Domain and args.WordList and args.ThreadCount:queue = Queue()result = []with open(args.WordList) as fp:for item in fp:queue.put(item.rstrip() + '.' + args.Domain)threads = []for item in range(int(args.ThreadCount)):threads.append(BlastDNSDomain(queue, result))for t in threads:t.start()for t in threads:t.join()print("所有DNS域名: {}".format(set(result)))else:parser.print_help()

Python 实现子域名查询与爆破相关推荐

  1. Python之子域名查询

    Python之子域名查询

  2. 渗透测试-----信息收集(概述、whois、子域名查询、爆破、vulhub域名传送漏洞复现、kali安装docker)

    文章目录 渗透测试 信息收集 1. 概述 2. 供练手的网站 3. whois查询 4. 子域名查询 域传送漏洞 1. 概述 2. 解决办法 3. vulhub漏洞复现 4. 子域名爆破 渗透测试 信 ...

  3. Python开发 CDN查询子域名查询

    import socket import os import sys import time import requests from bs4 import BeautifulSoup from ur ...

  4. 子域名查询DNS记录查询

    目录 子域名信息查询 Layer子域名爆破机 subDomainBrute 利用google查询 HTTP证书查询 DNS记录查询脚本 IP转换为经纬度 利用网页获取对方经纬度信息 首先关于DNS域名 ...

  5. 子域名查询、DNS记录查询

    目录 子域名信息查询 Layer子域名爆破机 subDomainBrute 利用google查询 HTTP证书查询 DNS记录查询脚本 IP转换为经纬度 利用网页获取对方经纬度信息 首先关于DNS域名 ...

  6. 信息收集之子域名查询--子域名扫描器: 子域名挖掘机 Subdomainsbrute---基本使用

    信息收集之子域名查询–子域名扫描器: 子域名挖掘机 Subdomainbrute-基本使用 工具介绍:subDomainsBrute 工具作者: lijiejie Github地址:https://g ...

  7. 信息收集之子域名查询--子域名扫描器: 子域名挖掘机 Subdomainbrute

    子域名查询–子域名扫描器: 子域名挖掘机 Subdomainbrute 安装–傻瓜式教你安装 Windows7环境为例 [step1]: 安装python2.7(省略) 对于这一步,可以检查一下是否安 ...

  8. Kali [dnsenum]子域名查询工具

    子域名查询工具(dnsenum) DNSenum是一款通过探测DNS记录在寻找子域名的工具. 安装 使用命令:apt-get install cpanminus 下载 使用:cpanm -n Net: ...

  9. [Python]输入星座名查询对应Unicode编码图案

    文章目录 [*Python*]输入星座名查询对应*Unicode*编码图案 *Unicode*编码介绍 *Python*代码实现 [Python]输入星座名查询对应Unicode编码图案 生活中常见的 ...

最新文章

  1. LuoguP3183 [HAOI2016]食物链 记忆化搜索
  2. WPF messagebox生命周期的探讨
  3. 计算机主机f不显示,为什么我不能按计算机上的f键行
  4. java arraylist实现_java实现ArrayList基本功能
  5. js获取浏览器语言(ie、ff、chrome)、contextpath
  6. 夜深了,发点无聊的东西
  7. android闹钟延时,android闹钟定时启动延时或者直接不启动
  8. 字节大牛教你手撕Java学习,大厂直通车!
  9. oracle如何调试sql,调试oracle与调试sql server存储过程
  10. 云服务器 ECS 搭建WordPress网站:购买 Linux 实例
  11. js读取文件的内置方法之 FileReader
  12. Git-LFS:大文件也有了版本管理
  13. Linux shadow文件
  14. sql round函数(case函数)
  15. NBIoT接收十六进制数据格式转化
  16. “Think Different”是个糟糕的想法
  17. andorid Telephony 整体介绍
  18. (转载)Bro NIDS的安装与配置
  19. MyEclipse 2020下载
  20. [Jexus系列] 一、安装并运行 Jexus

热门文章

  1. 为什么叫Windows 7?
  2. 小学计算机趣味知识,小学生电脑课上都学哪些知识和操作?
  3. 深入理解Activity启动模式之launchMode
  4. 鸿蒙os2.0手机版,小米手机刷鸿蒙os2.0
  5. 人工智能行业调查研究报告(算法导论调查研究报告)
  6. 甲骨文的CEO说 他眼里没有亚马逊和微软
  7. C++ 博客专栏汇总 面试学习用 非突击问答式
  8. matlab求多项式的实数根_matlab中怎么求多项式的根
  9. 网络视频直播系统的发展历程
  10. NoSqlRedis