suzanne161/Netscan

GitHub: suzanne161/Netscan

一款零依赖的 Python 多线程 TCP 端口扫描器,从底层实现端口发现、服务识别和 banner 抓取,帮助用户理解网络侦察的核心原理。

Stars: 0 | Forks: 1

# NetScan — 多线程 Python 端口与服务扫描器 一款使用 Python 从零构建的轻量级、无依赖网络侦察工具。NetScan 对目标主机执行 TCP connect 扫描,识别在开放端口上运行的常见服务,并尝试进行 banner grabbing 以获取软件/版本信息——这是渗透测试的侦察和扫描阶段中使用的一项基础技术。 ## 为什么开发这个工具 大多数初学者的安全作品集只展示如何*使用* Nmap 等现有工具。我想理解——并展示——端口扫描器底层实际发生了什么:raw sockets、TCP 握手、用于提升性能的多线程以及 banner 解析。这个项目正处于我的软件工程背景与向进攻性安全转型的交汇点。 ## 功能 - **多线程扫描** — 并发扫描数百个端口而非顺序扫描,大幅减少扫描时间 - **服务识别** — 将知名端口(21、22、80、443、3306、3389 等)映射到其对应的服务 - **Banner grabbing** — 尝试从开放端口读取服务 banner 以获取软件/版本详情,这通常是识别已知漏洞的第一步 - **灵活的端口范围** — 支持范围(`1-1024`)或特定列表(`22,80,443`) - **主机名解析** — 同时接受 IP 地址和主机名 - **零外部依赖** — 完全基于 Python 的标准库(`socket`、`threading`、`queue`)构建 ## 用法 ``` # 扫描目标的默认范围(端口 1-1024) python3 scanner.py 192.168.1.1 # 扫描特定端口 python3 scanner.py example.com -p 22,80,443 # 使用更多线程扫描自定义范围以提升速度 python3 scanner.py 192.168.1.1 -p 1-65535 -t 200 # 也显示关闭的端口(verbose mode) python3 scanner.py 192.168.1.1 -v ``` ### 输出 ``` C:\Users\Suzanne\Netscan>python scanner.py 127.0.0.1 ============================================================ NetScan - Python TCP Port & Service Scanner ============================================================ [!] For authorized security testing / educational use only. Target : 127.0.0.1 (127.0.0.1) Ports : 1-1024 (1024 total) Threads : 100 Started at : 2026-07-06 13:25:03 ------------------------------------------------------------ [OPEN] Port 135 Service: MSRPC [OPEN] Port 445 Service: SMB ------------------------------------------------------------ Scan completed in 11.16 seconds. Open ports found: 2 Summary: - Port 135 -> MSRPC - Port 445 -> SMB ============================================================ ``` ## 工作原理 1. **目标解析** — 将输入验证为 IP 地址,或通过 DNS 解析主机名 2. **端口队列** — 所有目标端口都被加载到线程安全的队列中 3. **工作线程** — 可配置的线程池从队列中提取端口,并对每个端口尝试进行 TCP `connect()` 4. **Banner grab** — 连接成功后,该工具会尝试读取服务返回的任何数据(许多服务在建立连接时会立即主动发送自身的相关信息) 5. **报告** — 收集结果并在最后以清晰的摘要形式打印出来 ## 路线图 / 未来改进 - [ ] 添加 UDP 扫描支持 - [ ] 将结果导出为 JSON/CSV 以便生成报告 - [ ] 集成 CVE 查询 API,以从 banner 中标记过时/存在漏洞的服务版本 - [ ] 通过 TTL 分析添加基础的 OS 指纹识别 ## ⚠️ 合理使用免责声明 此工具仅供**教育目的和授权的安全测试**使用。仅对您拥有或获得明确书面测试授权的系统运行此工具。对您不拥有/控制的网络/系统进行未经授权的端口扫描,可能会违反您所在国家的计算机滥用法律(例如印度的 IT Act、美国的 CFAA)。请始终在明确允许的范围内进行操作。 ## 技术栈 `Python 3` · `socket` · `threading` · `argparse` · `queue` 由 Suzanne Ansari 开发 — 正在向网络安全/渗透测试领域转型的 CSE (AI/ML) 毕业生。
标签:Banner抓取, Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 隐私保护