RithishNatarajan/Port-Scanner-Python-

GitHub: RithishNatarajan/Port-Scanner-Python-

一款基于 Python 的多线程 TCP 端口扫描器,用于检测目标主机的端口开放状态并导出结构化扫描报告。

Stars: 0 | Forks: 0

INTERNID : CITS4274 # 高级端口扫描器 一个使用 Python 编写的高级多线程 TCP 端口扫描器。该工具可以扫描单个或多个主机,检测开放、关闭和被过滤的端口,识别常见服务,并以多种格式导出扫描结果。 ## 功能 - 多线程 TCP 端口扫描 - 扫描单个或多个目标 - 支持 IP 地址和主机名 - 自定义端口范围扫描 - 全端口扫描 (1–65535) - 扫描最常见的顶级端口 - 内置常见服务检测 - 实时进度指示器 - 使用 **Ctrl+C** 优雅中断 - 将扫描结果导出为 **JSON**、**CSV** 和 **TXT** - 彩色命令行界面 - 包含扫描速度和耗时的详细扫描摘要 ## 使用的技术 - Python 3 - socket - argparse - concurrent.futures - threading - signal - json - csv - datetime - os - re 无需任何外部 Python 库。 ## 项目结构 ``` advanced-port-scanner/ │ ├── port_scanner.py ├── targets.txt # Optional target list ├── reports/ # Exported scan reports └── README.md ``` ## 环境要求 - Python 3.8 或更高版本 - Windows、Linux 或 macOS - 具有访问目标主机的网络权限 ## 安装说明 克隆仓库: ``` git clone https://github.com/yourusername/advanced-port-scanner.git ``` 进入项目目录: ``` cd advanced-port-scanner ``` ## 用法 ### 扫描单个主机 ``` python port_scanner.py -t 127.0.0.1 ``` ### 扫描多个主机 ``` python port_scanner.py -t 192.168.1.10,192.168.1.20 ``` ### 从文件中读取目标进行扫描 ``` python port_scanner.py --targets targets.txt ``` ### 扫描自定义端口范围 ``` python port_scanner.py -t scanme.nmap.org -p 20-1024 ``` ### 扫描所有端口 ``` python port_scanner.py --full ``` ### 扫描顶级常见端口 ``` python port_scanner.py --top 20 ``` ### 增加工作线程数 ``` python port_scanner.py -t 192.168.1.1 -w 200 ``` ### 导出结果 ``` python port_scanner.py -t scanme.nmap.org -o reports/result.json -f json ``` ## 命令行选项 | 选项 | 描述 | |---------|-------------| | `-t, --target` | 目标 IP 地址或主机名 | | `--targets` | 从文本文件中读取目标 | | `-p, --ports` | 端口列表或范围 (例如:22,80,443 或 1-1024) | | `--full` | 扫描所有 TCP 端口 (1–65535) | | `--top N` | 扫描前 N 个常见端口 | | `-w, --workers` | 工作线程数 | | `-T, --timeout` | 连接超时时间(秒) | | `-o, --output` | 输出文件或目录 | | `-f, --format` | 导出格式:json、csv、txt | | `--quiet` | 最小化控制台输出 | | `--no-banner` | 隐藏启动横幅 | ## 示例输出 ``` ================================================== ⚡ ADVANCED PORT SCANNER v2.0 ================================================== Target: scanme.nmap.org PORT STATUS SERVICE ------------------------------------------ 22 OPEN SSH 80 OPEN HTTP 443 OPEN HTTPS ================ SCAN SUMMARY ================ Target : scanme.nmap.org Duration : 2.41 seconds Ports Scanned : 1024 Open Ports : 3 Closed Ports : 1021 Filtered Ports : 0 Scan Speed : 425 ports/sec ``` ## 支持的导出格式 ### JSON 存储结构化的扫描信息,包括: - 目标 - 扫描时间 - 耗时 - 开放端口 - 关闭端口 - 被过滤的端口 ### CSV 存储: | 端口 | 服务 | 状态 | |------|---------|--------| ### TXT 生成人类可读的报告,包括: - 扫描信息 - 开放端口 - 关闭端口 - 被过滤的端口 ## 工作原理 1. 接收一个或多个目标主机。 2. 将主机名解析为 IP 地址。 3. 生成要扫描的端口列表。 4. 创建用于并发扫描的线程池。 5. 使用 `socket.connect_ex()` 尝试 TCP 连接。 6. 判断每个端口的状态是否为: - 开放 - 关闭 - 被过滤 7. 显示进度和扫描统计信息。 8. 如果需要,导出结果。 ## 局限性 - 仅支持 TCP Connect 扫描 - 不执行 UDP 扫描 - 无服务版本检测 - 无操作系统指纹识别 - 无数据包检查 - 准确性取决于防火墙配置和网络延迟 ## 未来增强功能 - UDP 端口扫描 - Banner Grabbing - 服务版本检测 - OS Fingerprinting - IPv6 支持 - HTML 报告生成 - PDF 报告导出 - 使用 Tkinter 或 PyQt 的 GUI 版本 - 网络发现 (Ping Sweep) - 漏洞检测 ## 学习目标 本项目展示了: - Socket 编程 - TCP 网络 - 多线程 - 使用 ThreadPoolExecutor 进行并发编程 - 端口扫描技术 - 命令行参数解析 - 异常处理 - 文件导出 (JSON, CSV, TXT) - 信号处理 (Ctrl+C) - Python 网络基础 ## 免责声明 本工具仅供**教育目的和授权的安全测试使用**。 请**勿**在未经明确许可的情况下将其用于扫描系统、网络或服务。未经授权的扫描可能会违反组织政策或适用法律。 ## 许可证 本项目发布用于教育目的。您可以自由地对其进行修改、改进,并用于学习、研究和授权的渗透测试。
标签:Python, 云原生安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 逆向工具, 隐私保护