aq358237-alt/network-port-scanner

GitHub: aq358237-alt/network-port-scanner

一款基于纯 Python 标准库构建的多线程网络端口扫描器,面向授权渗透测试场景提供端口探测、服务识别与报告导出。

Stars: 0 | Forks: 0

# NetScan — 网络端口扫描器 ![Python](https://img.shields.io/badge/Python-3.7%2B-blue?logo=python&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-green) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey) ![Status](https://img.shields.io/badge/Status-Active-brightgreen) 一个快速、多线程的网络端口扫描器,使用纯 Python 构建。专为授权的渗透测试和网络侦察设计。无需第三方依赖——可在任何安装了 Python 3.7+ 的系统上运行。 ## 功能 - **多线程** — 同时扫描数百个端口(线程数可配置) - **服务检测** — 识别 30 多种常见服务(SSH、HTTP、MySQL、RDP 等) - **渗透测试笔记** — 标记高风险端口,并提供需要调查的特定攻击向量 - **Banner 抓取** — 可选地拉取服务 Banner 用于版本指纹识别 - **灵活的目标指定** — 单个端口、范围、逗号分隔列表、Top 100 或全部 65535 个端口 - **导出报告** — 将结果保存为 JSON 或 CSV 以便记录 - **彩色输出** — 简洁的终端 UI,即时高亮显示开放端口 - **零依赖** — 仅使用 Python 标准库(`socket`、`threading`、`argparse`) ## 演示 ``` NetScan - Network Port Scanner v1.0 by Akbar Qureshi [!] For authorized testing only Target : 45.33.32.156 (scanme.nmap.org) Ports : 76 ports Threads : 100 Timeout : 1.0s per port Started : 2026-06-10 14:32:08 Scanning... [OPEN] Port 22 SSH │ SSH-2.0-OpenSSH_6.6.1p1 ★ SSH - Check for weak credentials / old version [OPEN] Port 80 HTTP │ HTTP/1.1 200 OK ★ HTTP - Check for web vulnerabilities [OPEN] Port 9929 Unknown [OPEN] Port 31337 Unknown ──────────────────────────────────────────────────────────── Scan Summary ──────────────────────────────────────────────────────────── Target : 45.33.32.156 (scanme.nmap.org) Ports scanned: 76 Open ports : 4 Threads used : 100 Duration : 3.42s ──────────────────────────────────────────────────────────── Open Port Details: Port Service Pentest Note ─────── ─────────────── ───────────────────────────────────── 22 SSH SSH - Check for weak credentials / old version 80 HTTP HTTP - Check for web vulnerabilities 9929 Unknown — 31337 Unknown — ``` ## 安装 ``` # Clone repo git clone https://github.com/aq358237-alt/network-port-scanner.git cd network-port-scanner # 无需 pip install — 纯 Python stdlib python3 scanner.py --help ``` ## 使用方法 ``` # 扫描 top 100 常见端口(默认) python3 scanner.py -t 192.168.1.1 # 扫描端口范围 python3 scanner.py -t 192.168.1.1 -p 1-1000 # 扫描特定端口 python3 scanner.py -t 192.168.1.1 -p 22,80,443,3306,3389 # 完整扫描 — 所有 65535 个端口(使用更高线程数以提升速度) python3 scanner.py -t 192.168.1.1 --full --threads 500 # 启用 banner grabbing python3 scanner.py -t 192.168.1.1 -p 1-1000 --banner # 将结果保存为 JSON python3 scanner.py -t 192.168.1.1 -o results.json # 将结果保存为 CSV python3 scanner.py -t 192.168.1.1 -o results.csv # 安全的公开演示目标(由 nmap.org 授权) python3 scanner.py -t scanme.nmap.org ``` ## 选项 | Flag | 描述 | 默认值 | |------|-------------|---------| | `-t`, `--target` | 目标 IP 地址或主机名 | 必填 | | `-p`, `--ports` | 要扫描的端口:`80`、`1-1000` 或 `22,80,443` | Top 100 | | `--full` | 扫描全部 65535 个端口 | Off | | `--threads` | 并发线程数 | 100 | | `--timeout` | 每个端口的等待秒数 | 1.0 | | `--banner` | 抓取服务 Banner | Off | | `-o`, `--output` | 导出为 `.json` 或 `.csv` | Off | ## 示例 JSON 输出 请参阅 [`sample_output.json`](sample_output.json) 查看示例报告。 ## 工作原理 ``` Target IP │ ▼ Port Queue (all target ports added) │ ├──▶ Thread 1 ──▶ TCP connect() ──▶ Port open? ──▶ Banner grab (optional) ├──▶ Thread 2 ──▶ TCP connect() ──▶ Port open? ──▶ Service lookup ├──▶ Thread N ──▶ TCP connect() ──▶ Port closed / filtered │ ▼ Results collector (thread-safe lock) │ ▼ Summary table + JSON/CSV export ``` 扫描器使用 `socket.connect_ex()` —— 一个非阻塞的 TCP 连接,成功时(端口开放)返回 0,失败时(端口关闭/被过滤)返回错误代码。多线程通过 Python 的 `threading.Thread` 和 `queue.Queue` 进行管理,因此线程绝不会重复工作。 ## 检测到的服务 | 端口 | 服务 | 渗透测试笔记 | |------|---------|-------------| | 21 | FTP | 检查匿名登录 | | 22 | SSH | 检查弱凭据/旧版本 | | 23 | Telnet | 不安全:明文协议 | | 80 / 8080 | HTTP | 检查 Web 漏洞 | | 443 | HTTPS | 检查 SSL/TLS 版本和加密强度 | | 445 | SMB | 检查 EternalBlue (MS17-010) | | 3306 | MySQL | 检查远程 root 登录 | | 3389 | RDP | 检查 BlueKeep / 弱凭据 | | 6379 | Redis | 通常在未授权的情况下暴露 | | 27017 | MongoDB | 通常在未授权的情况下暴露 | ## 运行测试 ``` python3 test_scanner.py ``` ``` Running NetScan unit tests... test_comma_separated ... ok test_deduplication ... ok test_mixed ... ok test_range ... ok test_single_port ... ok test_common_ports_mapped ... ok test_unknown_port_returns_default ... ok test_high_risk_ports_noted ... ok test_notes_are_strings ... ok Ran 9 tests in 0.000s OK ``` ## 法律与道德使用声明 此工具专为以下用途构建: - 扫描您自己的系统和网络 - 授权的渗透测试项目 - 在受控环境中学习和教育(例如 DVWA、HackTheBox、TryHackMe、您自己的实验 VM) **未经明确的书面许可,请勿将其用于他人的系统。** ## 作者 **Akbar Qureshi** CEH v13 | CompTIA Security+ | CompTIA Network+ | 网络安全专家 (Simplilearn) - LinkedIn: [linkedin.com/in/akbar-qureshi-secops](https://www.linkedin.com/in/akbar-qureshi-secops/) - GitHub: [github.com/aq358237-alt](https://github.com/aq358237-alt) ## 许可证 MIT 许可证 — 详见 [LICENSE](LICENSE)。
标签:Python, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络扫描, 逆向工具