亲手构建安全工具能揭示成熟扫描器背后的工程决策:输入解析、超时、并发、协议字段、异常处理和结果筛选。本实践课程使用 Python 开发聚焦的网络侦察工具,并把输出连接成可重复流程。
你将创建多线程 TCP connect 扫描器,使用 Scapy 构造 ICMP 与 TCP 数据包,并构建并发 Web 目录枚举器。最终挑战会扫描本地 Web 端口范围,对每个开放服务执行字典驱动发现,并把结果写入报告。
你将学到什么
- 使用
argparse构建目标与端口范围命令行接口 - 使用
socket.connect_ex、超时和异常处理检测开放 TCP 端口 - 比较顺序扫描与线程并发,并等待工作线程完成
- 在 Scapy 中叠加 IP、ICMP 和 TCP 层并检查字段
- 使用
sr1发送一次 ICMP 探测,并处理响应或超时 - 从字典读取目录候选,并发发送 HTTP 请求
- 按选定状态码筛选端点,并处理请求错误
- 把端口扫描和目录发现串联为 localhost 报告工具
本课程适合谁
本中级课程适合希望理解基础扫描器和枚举器内部机制的网络安全学习者、网络工程师和 Python 开发者。课程强调实现概念与安全实验,而不是替代 Nmap、ffuf 等成熟工具。
前置要求: 能够编写 Python 函数、使用模块、处理集合和异常并读取文件;需要了解 TCP 端口、HTTP 状态码、IP/ICMP/TCP 头部和 Linux 终端。
学习环境: 交互式 Ubuntu 22.04 终端,包含 Python 3、Scapy、requests、本地测试 Web 服务和预置字典。扫描与目录发现针对 127.0.0.1;数据包实验会依据网络策略向 8.8.8.8 发送一次 ICMP Echo Request。
常见问题
可以把这些工具指向任意主机吗?
只能扫描你拥有或明确获准测试的系统。引导实验与最终挑战使用 127.0.0.1 本地服务;Scapy 练习会向 Google Public DNS 发送一次标准 ICMP Echo Request 来练习响应处理。
Scapy 探测没有收到响应怎么办?
当 ICMP 或原始数据包被阻止时,这是正常结果。脚本设置两秒超时并处理无响应;学习目标是构包与响应逻辑,而非保证互联网可达。
扫描器和目录 fuzzer 可用于生产吗?
不可以。它们用于展示核心机制。成熟工具还需要有界并发、速率限制、服务识别、重试、通配响应处理、TLS 选项、更完整输入验证、确定性输出和大量测试。
这里的“fuzzer”会发送畸形载荷吗?
不会。目录 fuzzer 只使用普通 HTTP GET 和状态码筛选进行字典驱动路径枚举,不会变异协议字段、注入应用载荷或测试内存破坏漏洞。



