【渗透工具】——PYDNS扫描器

一款现代化的高性能 DNS 扫描器,拥有美观的终端用户界面 (TUI),采用 Textual 语言编写。
该工具可以扫描数百万个 IP 地址,查找可用的 DNS 服务器,并可选配 Slipstream 代理测试和自动多平台客户端下载功能。

🎉 v1.2.0 版本新增功能

🎨 视觉和用户体验改进

  • 小屏幕支持- 修复了小屏幕设备上可滚动表单的高度问题
  • 增强状态跟踪- 实时显示通过/失败/找到的统计信息,并以颜色编码显示(白色=找到,绿色=通过,红色=失败)
  • 失败的服务器位于末尾- 失败的代理测试现在显示在结果列表的底部

🔐 代理身份验证

  • 代理身份验证支持- 新增代理身份验证切换复选框
  • 用户名/密码字段- 默认隐藏,启用代理身份验证后显示。
  • HTTP 和 SOCKS5 身份验证- 身份验证同时应用于 HTTP 和 SOCKS5 代理测试

⌨️ 键盘快捷键

  • S - 开始扫描(从配置屏幕)
  • :退出应用程序
  • C - 将结果保存到文件
  • P - 暂停扫描(扫描时)
  • R - 恢复扫描(暂停后)
  • X - 重新排列剩余 IP 地址(暂停时)

🔔 音频效果提升

  • 单枚硬币音效- 代理测试成功时,发出清晰的单枚硬币闪光/通知

📦 v1.1.0 版本更新内容

🎨 视觉和用户体验改进

  • GitHub 深色主题- 漂亮的深色模式,采用 GitHub 风格的颜色(#0d1117 背景色,#58a6ff 强调色)
  • 全屏开始菜单- 配置表单现在使用终端的全部高度/宽度
  • 改进下拉菜单- 修复了下拉菜单的样式,使其高度和文本可见性均符合预期。
  • 精简复选框- 所有选项(随机子域名、代理测试、铃声)显示在同一行

⚡ 性能提升

  • 5 项并发代理测试- 从 3 项并行 Slipstream 测试增加到 5 项(端口 10800-10804)
  • 更好的退出处理- 正确恢复退出时的终端状态,包括光标恢复和输入恢复

🌍 CIDR 管理

  • 捆绑式伊朗IP地址- 预加载约1000万个伊朗IPv4地址(iran-ipv4.cidrs)
  • CIDR下拉菜单- 轻松选择伊朗默认文件和自定义文件
  • 域名缓存- 跨会话记住上次使用的域名

✨ 特点

  • 🎨美观的 TUI 界面- GitHub 深色主题终端界面
  • 高性能- 异步扫描,并发性可配置
  • ⏸️暂停/恢复/随机播放- 完全扫描控制
  • 📊实时统计- 实时进度跟踪和扫描指标
  • 🔍智能 DNS 检测- 即使出现错误响应(NXDOMAIN、NODATA),也能检测出可用的 DNS 服务器
  • 🎲随机子域名支持- 使用随机子域名避免缓存响应
  • 🌐支持多种 DNS 类型- 支持 A、AAAA、MX、TXT、NS 记录
  • 🔌 Slipstream 集成- 可选的代理测试,支持 5 个并行执行
  • 🌍多平台自动下载- 自动下载适用于您平台的正确 Slipstream 客户端
  • 📥断点续传- 网络中断时智能断点续传,并带有重试逻辑
  • 💾自动保存结果- 自动将扫描结果导出为 JSON 格式
  • 📁 CIDR 管理- 内置伊朗 IP 地址 + 自定义文件选择器
  • ⚙️可配置- 可调节并发数、超时时间和过滤器
  • 🚀内存高效- 无需将所有 IP 地址加载到内存即可流式生成 IP 地址
  • 📝可选日志记录- 默认禁用,可轻松启用以进行故障排除
  • 🔔音频提示- 代理测试成功时可选择发出闪光音效

📋 要求

Python 版本

  • Python 3.11 或更高版本

依赖关系

复制代码
# Core dependencies
textual>=0.47.0       # TUI framework
aiodns>=3.1.0         # Async DNS resolver
httpx[socks]>=0.25.0  # HTTP client with SOCKS5 support for proxy testing
orjson>=3.9.0         # Fast JSON serialization
loguru>=0.7.0         # Advanced logging
pyperclip>=1.8.0      # Clipboard support

选修的

  • Slipstream 客户端 - 用于代理测试功能(5 个并发测试)
    • 自动下载:应用程序会自动检测您的平台并下载正确的客户端。
    • 智能检测:检测现有安装(包括旧式文件名)
    • 支持断点续传:部分下载将被保存,重试时可以继续下载。
    • 支持的平台:
      • Linux (x86_64):slipstream-client-linux-amd64
      • Windows (x86_64):slipstream-client-windows-amd64.exe
      • macOS(ARM64):slipstream-client-darwin-arm64
      • macOS(Intel):slipstream-client-darwin-amd64
    • 可从以下位置下载手动版本:slipstream-rust-deploy releases

📦 捆绑式 Slipstream 客户端

slipstream-client/文件夹中包含了适用于所有平台的预编译 Slipstream 客户端二进制文件:

平台 小路 描述
Linux slipstream-client/linux/slipstream-client-linux-amd64 Linux x86_64 二进制文件
视窗 slipstream-client/windows/slipstream-client-windows-amd64.exe Windows x86_64 可执行文件
macOS ARM slipstream-client/mac/slipstream-client-darwin-arm64 macOS 苹果芯片(M1/M2/M3)
macOS 英特尔 slipstream-client/mac/slipstream-client-darwin-amd64 macOS Intel x86_64

⚠️Windows 注意: Windows 客户端需要 OpenSSL DLL 文件(libcrypto-3-x64.dlllibssl-3-x64.dll),这些文件包含在slipstream-client/windows/文件夹中。使用自动下载时,这些 DLL 文件会与 Windows 可执行文件一起自动下载。

📥 一体化存档

为方便起见,我们提供了包含所有平台二进制文件的压缩包:

  • slipstream-client/slipstream-client-all-platforms.tar.gz- 最佳压缩(推荐)
  • slipstream-client/slipstream-client-all-platforms.zip- Windows 兼容格式

这些压缩包包含 Linux、Windows 和 macOS 客户端,只需一次下载即可获得。

🚀 安装

方法一:从 PyPI 安装(推荐)

安装 PYDNS Scanner 的最简单方法:

使用 pip
复制代码
pip install pydns-scanner
使用紫外线(速度更快)
复制代码
uv pip install pydns-scanner
使用镜像(适用于 PyPI 访问权限有限的用户)
复制代码
# Runflare Mirror
pip install pydns-scanner -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com

# Or Alibaba Cloud Mirror
pip install pydns-scanner -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

# Or TUNA Mirror
pip install pydns-scanner -i https://pypi.tuna.tsinghua.edu.cn/simple
安装后运行
复制代码
pydns-scanner

方法二:从源代码运行(手动)

如果您想直接从代码库运行代码:

第一步:克隆代码库
复制代码
git clone https://github.com/xullexer/PYDNS-Scanner.git
cd PYDNS-Scanner
步骤二:安装依赖项

使用紫外线(推荐 - 快速!)

复制代码
uv pip install -r requirements.txt

使用 pip

复制代码
pip install -r requirements.txt

使用镜像(适用于 PyPI 访问权限有限的用户)

复制代码
# Runflare Mirror
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com

# Or Alibaba Cloud Mirror
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

# Or TUNA Mirror
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
步骤 3:运行应用程序
复制代码
python -m python

🎮 用法

基本用法

来自 PyPI:

复制代码
pydns-scanner

来源:

复制代码
python -m python

这将启动交互式用户界面 (TUI),您可以在其中进行配置:

  • CIDR 文件:包含 IP 地址范围(CIDR 表示法)的文件路径
  • 域名:要查询的域名(例如,google.com
  • DNS 类型:记录类型(A、AAAA、MX、TXT、NS)
  • 并发数:并行工作进程数(默认值:100)
  • 随机子域名:添加随机前缀以避免缓存响应
  • Slipstream 测试:启用已找到的 DNS 服务器的代理测试

CIDR 文件格式

创建一个文本文件,每行包含一个 CIDR 范围:

notranslate 复制代码
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code># Comments start with #
1.1.1.0/24
8.8.8.0/24
178.22.122.0/24
185.51.200.0/22
</code></span></span></span></span>

示例工作流程

  1. 启动应用程序

    复制代码
    python dnsscanner_tui.py
  2. 配置扫描参数

    • 点击"📂浏览"选择您的CIDR文件
    • 输入域名(例如,google.com
    • 设置并发数(建议:100-500)
    • 根据需要启用选项
  3. 开始扫描

    • 点击"🚀 开始扫描"
    • 实时查看进度和结果
    • 随时使用"⏸ 暂停"暂停扫描
    • 使用"▶ 继续"从上次暂停的地方继续。
  4. 查看结果

    • 按响应时间排序(最快排在最前面)
    • 绿色 = 快速(<100毫秒)
    • 黄色 = 中等 (100-300毫秒)
    • 红色 = 慢(>300毫秒)
  5. 保存结果

    • 结果会自动保存。results/TIMESTAMP.txt
    • s或点击"💾 保存结果"手动保存。

⌨️ 键盘快捷键

钥匙 什么时候 行动
s 配置屏幕 开始扫描
q 随时 退出应用程序
c 扫描时 保存结果
p 扫描时 暂停扫描
r 暂停时 恢复扫描
x 暂停时 重新排列剩余的IP地址

🎮 控制按钮

在进行扫描过程中:

  • ⏸ 暂停- 暂停扫描而不丢失进度
  • ▶ 继续扫描- 从上次暂停的地方继续扫描
  • 💾 保存结果- 手动保存当前结果
  • 🛑 退出- 退出应用程序

🎛️ 配置

日志记录

默认情况下禁用日志记录,以保持界面简洁并避免不必要的磁盘写入。

要启用日志记录 ,请编辑dnsscanner_tui.py

复制代码
# Configure logging (disabled by default)
logger.remove()  # Remove default handler to disable logging
# Uncomment the line below to enable file logging
logger.add(
    "logs/dnsscanner_{time}.log",
    rotation="50 MB",
    compression="zip",
    level="DEBUG",
)

启用后:

  • 日志保存到logs/dnsscanner_TIMESTAMP.log
  • 自动旋转,文件大小为 50 MB
  • 自动压缩(zip)
  • 包含调试级别详细信息

并发设置

请根据您的系统和网络情况进行调整:

  • 低(50-100):保守,适用于速度较慢的系统。
  • 中等(100-300):均衡性能
  • 高(300-500):扫描速度快,需要性能良好的硬件。
  • 非常高(500+):最高速度,可能达到资源限制

滑流测试

该扫描器支持并行 Slipstream 代理测试,并可自动下载:

复制代码
# In __init__ method
self.slipstream_max_concurrent = 3  # Max parallel proxy tests
self.slipstream_base_port = 10800   # Base port (uses 10800, 10801, 10802)

自动下载功能:

  • 平台检测(Windows/Linux/macOS + 架构)
  • 进度条显示下载速度
  • 中断后恢复(保留.partial文件)
  • 使用指数退避策略重试(最多尝试 5 次)
  • 旧式文件名检测(slipstream-client.exe

DNS超时

DNS 查询超时时间为 2 秒:

复制代码
# In _test_dns method
resolver = aiodns.DNSResolver(nameservers=[ip], timeout=2.0, tries=1)

📊 输出格式

结果以JSON格式保存:

复制代码
{
  "scan_info": {
    "domain": "google.com",
    "dns_type": "A",
    "slipstream_test": true,
    "total_found": 50,
    "total_passed_proxy": 42,
    "total_saved": 42,
    "elapsed_seconds": 300.5,
    "timestamp": "2026-01-26_10-30-45"
  },
  "servers": ["8.8.8.8", "1.1.1.1", "..."]
}

🔍工作原理

DNS检测逻辑

如果满足以下条件,扫描器会将服务器视为"正常工作的 DNS 服务器":

  1. 响应成功:在 2 秒内返回有效的 DNS 应答
  2. DNS 错误响应 :在 2 秒内返回 NXDOMAIN、NODATA 或 NXRRSET。
    • 这些错误意味着 DNS 服务器运行正常,只是记录不存在。

这种方法比只接受成功响应的工具能捕获更多可用的 DNS 服务器。

性能优化

  • 流媒体 IP 生成:IP 地址根据 CIDR 范围动态生成。
  • 分块处理:以 500 个 IP 地址为一批进行处理
  • 异步 I/O:使用 aiodns 进行非阻塞 DNS 查询
  • 信号量控制:限制并发操作以防止资源耗尽
  • 内存映射:尽可能使用 mmap 快速读取 CIDR 文件

随机子域名功能

启用此功能后,查询将使用随机前缀:

notranslate 复制代码
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code>original: google.com
random:   a1b2c3d4.google.com
</code></span></span></span></span>

使用场景 :绕过缓存的 DNS 响应 要求 :目标域名应支持通配符 DNS(*.example.com

📂 目录结构

notranslate 复制代码
<span style="background-color:#f6f8fa"><span style="color:#1f2328"><span style="color:#1f2328"><span style="background-color:#f6f8fa"><code>PYDNS-Scanner/
├── README.md                   # This file
├── python/
│   ├── dnsscanner_tui.py      # Main application
│   ├── requirements.txt        # Python dependencies
│   └── iran-ipv4.cidrs        # Sample CIDR file
├── logs/                       # Application logs (when enabled, gitignored)
├── results/                    # Scan results (gitignored)
└── slipstream-client/          # Slipstream binaries (auto-downloaded, gitignored)
    ├── windows/
    ├── linux/
    └── macos/
</code></span></span></span></span>

🐛故障排除

"没有名为'textual'的模块"

复制代码
pip install textual

"文件未找到"错误

  • 请确保 CIDR 文件路径正确
  • 使用脚本位置的绝对路径或相对路径
  • 使用内置文件浏览器(📂 浏览按钮)

慢速扫描

  • 降低并发值
  • 检查网络带宽
  • 验证 DNS 超时设置

内存使用率高

  • 该扫描仪采用流式传输技术以最大限度地减少内存占用
  • 如果问题仍然存在,请减小数据块大小。_stream_ips_from_file

Slipstream 下载失败

  • 网络问题:应用会自动重试最多 5 次,采用指数退避策略。
  • 恢复下载 :部分下载会保存为.partial文件 - 只需再次运行即可恢复下载。
  • 手动下载 :从slipstream-rust-deploy releases下载
  • 查看日志:启用日志记录(请参阅"配置"部分)以获取详细的错误信息
  • 防火墙:确保允许访问 GitHub

未检测到尾流

  • 检查平台特定目录是否存在(slipstream-client/windows/,等等)
  • 验证文件名是否匹配(支持新旧文件名)
  • 对于旧版安装:使用slipstream-client.exe(自动检测)
  • 启用日志记录以查看检测过程

滑流测试失败

  • 验证可执行文件是否具有正确的权限(Linux/macOS chmod +x:)
  • 请检查端口 10800-10802 是否可用
  • 查看logs/目录中的日志(如果已启用)
  • 手动测试与 DNS 服务器的连接

📝 日志记录

默认值:禁用- 不创建任何日志,以保持系统清洁。

启用日志记录:

  1. 编辑python/dnsscanner_tui.py
  2. 取消注释该logger.add()部分
  3. 日志已保存到logs/dnsscanner_TIMESTAMP.log

日志级别:

  • 调试:详细的 DNS 查询结果和下载进度
  • 信息:扫描进度和统计数据
  • 警告:非关键问题,请重试
  • 错误:严重故障,下载错误

🌍查找CIDR列表

国家/地区 IP 地址范围

IPv4

IPv6

使用示例

复制代码
# Download Iran IPv4 ranges
wget https://www.ipdeny.com/ipblocks/data/aggregated/ir-aggregated.zone -O iran-ipv4.cidrs

# Use in scanner
python dnsscanner_tui.py
# Then select iran-ipv4.cidrs in the file browser

🤝 贡献

欢迎贡献代码!请随时提交 pull request 或提出 issue。

开发环境

复制代码
git clone https://github.com/xullexer/PYDNS-Scanner.git
cd PYDNS-Scanner/python
pip install -r requirements.txt
python dnsscanner_tui.py

📈 笔记

在各种系统上测试了性能:

  • 小规模扫描(1000 个 IP 地址):约 10-30 秒
  • 中等规模扫描(50,000 个 IP 地址):约 5-10 分钟
  • 大规模扫描(100万+ IP地址):约1-3小时

结果会因网络速度、并发设置和系统资源而异。

🔐 安全注意事项

  • 使用加密安全的随机数生成器(secrets.SystemRandom
  • 不会记录任何凭证或敏感数据。
  • DNS 查询使用标准的 UDP/TCP 端口 53。
  • Slipstream 代理测试是可选的,默认情况下处于禁用状态。

相关推荐
KG_LLM图谱增强大模型16 小时前
AgentRxiv:迈向协作式自主科学研究新范式
人工智能·知识图谱
一名优秀的码农20 小时前
vulhub系列-12-Hackademic.RTB1(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
小龙报21 小时前
【Coze-AI智能体平台】Coze 工作流 = 智能体的 “流程管家”?一文解锁自动化落地新玩法
人工智能·语言模型·自然语言处理·性能优化·数据分析·知识图谱·需求分析
Loo国昌2 天前
【AI应用开发实战】05_GraphRAG:知识图谱增强检索实战
人工智能·后端·python·语言模型·自然语言处理·金融·知识图谱
一名优秀的码农2 天前
symfonos系列-symfonos6v2(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
KG_LLM图谱增强大模型3 天前
TKG-Thinker:通过智能体强化学习实现时序知识图谱的动态推理
人工智能·知识图谱
岱宗夫up4 天前
从代码模式到智能模式:AI时代的设计模式进化论
开发语言·python·深度学习·神经网络·自然语言处理·知识图谱
KG_LLM图谱增强大模型5 天前
给具身智能装上图谱大模型大脑,7B小模型超越72B大模型!层次化知识图谱让复杂机器人规划能力暴增17%,能耗大幅降低
人工智能·机器人·知识图谱