首页 >> 全栈工程 >>Python >>Python教程 >> Ots python教程_使用Python开发子域扫描器
详细内容

Ots python教程_使用Python开发子域扫描器

查找特定网站的子域可让您探索该网站的完整域基础结构。在涉及针对道德黑客的渗透测试中的信息收集阶段时,构建这样的工具确实非常方便。


手动搜索子域将花费很多时间。幸运的是,我们不必这样做,在本教程中,我们将使用请求库在Python中构建一个子域扫描程序。让我们开始吧!

安装它:

pip3 install requests

我们将在此处使用的方法是蛮行强制的,换句话说,只要我们收到服务器的响应,就将测试该特定域的所有常见子域名,这表明该子域仍然存在。


打开一个新的Python文件并继续,让我们使用google.com进行演示,我之所以使用它是因为google虽然有很多子域:

import requests

# the domain to scan for subdomains
domain = "google.com"

现在我们需要扫描一个大的子域列表,我仅使用100个子域进行演示,但是在现实世界中,如果您真的想发现所有子域,则必须使用更大的列表,请查看此github。存储库,最多包含1万个子域。


我在当前目录中有一个文件“ subdomains.txt”,请确保您也这样做(在此存储库中选择列表):

# read all subdomains
file = open("subdomains.txt")
# read all content
content = file.read()
# split by new lines
subdomains = content.splitlines()

现在,子域列表包含了我们要测试的子域,让我们进行暴力破解:

for subdomain in subdomains:
    # construct the url
    url = f"http://{subdomain}.{domain}"
    try:
        # if this raises an ERROR, that means the subdomain does not exist
        requests.get(url)
    except requests.ConnectionError:
        # if the subdomain does not exist, just pass, print nothing
        pass
    else:
        print("[+] Discovered subdomain:", url)

首先,我们建立适合发送请求的URL,然后使用requests.get()函数从服务器获取HTTP响应,这将在服务器不响应时引发ConnectionError异常,这就是我们包装的原因在try / except块中。

最后,如果未引发异常,则子域存在。

这是运行脚本时结果的一部分:

1.PNG

您会注意到,运行此过程的速度相当慢,这取决于您的Internet连接,但是如果您想加快扫描过程的速度,可以使用多个线程进行扫描,我已经编写了一个线程,请在此处进行检查。

另外,考虑将结果写入文件中,而不只是打印到控制台中,这将使您在执行脚本之后稍后探索发现的子域。

好了,我们完成了,现在您知道如何发现您真正想要的任何网站的子域!

ots网络logo

OTS网络安全门户主要提供网络信息安全教程、文章、工具,让更多的小伙伴加入我们的社区一起学习。

技术支持: 建站ABC | 管理登录