### 如何处理子域名爆破的泛解析问题

1. 泛解析的探测与识别

在进行子域名爆破之前，第一步是确定目标域名是否开启了泛解析

操作方法：

1. 随机生成一个不存在的子域名：例如，`random-string-123.example.com`。这个字符串要足够随机且复杂，以确保它不可能是真实存在的子域名
2. 对其进行 DNS 查询：使用 `ping`、`dig` 或 `nslookup` 等命令来查询其 IP 地址
3. 记录返回的 IP 地址：如果返回了一个 IP 地址，那么这个地址很可能就是泛解析的地址

为了提高准确性，你可以多生成几个随机子域名并重复上述步骤。如果它们都解析到相同的 IP 地址，那么就可以确认泛解析已开启，且你已经找到了泛解析的 IP 地址

2. 爆破过程中的泛解析过滤

确认泛解析后，在进行子域名爆破时，你需要过滤掉所有解析到泛解析 IP 地址的结果

操作方法：

1. 使用专门的工具：许多现代的子域名爆破工具，如 Subfinder、Massdns、Amas 等，都内置了泛解析过滤功能。它们会在爆破前自动进行泛解析检测，并在爆破过程中自动过滤掉泛解析结果
2. 手动处理（脚本化）：如果你使用的是不具备自动过滤功能的工具，或者想自己编写脚本，可以采用以下策略：
   - 第一步：获取 IP 列表
     - 运行你的爆破工具，例如 `dnsrecon` 或 `fierce`，并将所有解析出的子域名及其 IP 地址保存到一个文件中
   - 第二步：过滤泛解析
     - 编写一个简单的脚本（Python、Bash 等）
     - 遍历文件中的每一行数据（`子域名 IP`）
     - 对比每个 IP 地址，如果它等于之前探测到的泛解析 IP 地址，就将其所在的行删除或标记
     - 最后，你剩下的就是非泛解析的、真实存在的子域名

一个简单的 Python 脚本示例：

    import sys

    def filter_wildcard(input_file, wildcard_ip):
        """
        过滤包含泛解析 IP 的子域名
        """
        try:
            with open(input_file, 'r') as f:
                lines = f.readlines()

            filtered_domains = []
            for line in lines:
                parts = line.strip().split()
                if len(parts) >= 2:
                    domain, ip = parts[0], parts[1]
                    if ip != wildcard_ip:
                        filtered_domains.append(domain)

            return filtered_domains

        except FileNotFoundError:
            print(f"Error: The file '{input_file}' was not found.")
            sys.exit(1)

    if __name__ == "__main__":
        if len(sys.argv) != 3:
            print("Usage: python filter_domains.py <input_file> <wildcard_ip>")
            sys.exit(1)

        input_file = sys.argv[1]
        wildcard_ip = sys.argv[2]

        real_domains = filter_wildcard(input_file, wildcard_ip)

        print("Found the following real subdomains:")
        for domain in real_domains:
            print(domain)