harshit-12910/python-port-scanner

GitHub: harshit-12910/python-port-scanner

一个基于 Python 多线程的 TCP 端口扫描器,用于检测目标主机开放端口、识别服务并进行 Banner 抓取,最终生成 JSON 报告。

Stars: 0 | Forks: 0

# Python TCP 端口扫描器 一个使用 Python 编写的多线程 TCP 端口扫描器,能够扫描目标主机、识别开放端口、检测常见服务、执行基本的 banner grabbing,并将扫描结果导出为 JSON。 ## 功能 * 扫描 IP 地址或主机名 * 可配置的端口范围 (1–65535) * 主机名到 IP 的解析 * 使用 `ThreadPoolExecutor` 进行多线程扫描 * 检测常见的 TCP 服务 * 对支持的服务进行基本的 banner grabbing * 生成 JSON 报告 * 输入验证和错误处理 * 扫描性能测量 * 简洁的命令行界面 ## 使用的技术 * Python 3 * Socket 编程 * TCP/IP 网络 * ThreadPoolExecutor * JSON * Time 模块 ## 项目结构 ``` python-port-scanner/ │ ├── scanner.py ├── README.md ├── scan_results.json └── screenshots/ ``` ## 工作原理 1. 接收 IP 地址或主机名。 2. 将主机名解析为 IPv4 地址。 3. 验证用户指定的端口范围。 4. 创建工作线程池。 5. 尝试与每个端口建立 TCP 连接。 6. 使用 Python 的 socket 库检测常见服务。 7. 在可能的情况下执行基本的 banner grabbing。 8. 显示发现的开放端口。 9. 将结果导出为 JSON 报告。 ## 示例 ``` ============================== Python TCP Port Scanner ============================== Target : scanme.nmap.org IP : 45.xxx.xxx.xxx Ports : 1-1000 Scanning... [OPEN] Port 22 SSH └── Banner: SSH-2.0-OpenSSH_9.6 [OPEN] Port 80 HTTP └── Banner: HTTP/1.1 200 OK | Server: Apache ============================== Scan Summary ============================== Open Ports Found : 2 Scan Time : 1.84 seconds Results Saved : scan_results.json ``` ## JSON 输出示例 ``` { "target": "scanme.nmap.org", "ip": "45.xxx.xxx.xxx", "ports_scanned": "1-1000", "open_port_count": 2, "scan_time_seconds": 1.84, "results": [ { "port": 22, "service": "SSH", "banner": "SSH-2.0-OpenSSH_9.6" }, { "port": 80, "service": "HTTP", "banner": "HTTP/1.1 200 OK | Server: Apache" } ] } ``` ## 展示的技能 * Python 编程 * Socket 编程 * TCP/IP 网络 * 多线程 * 网络服务检测 * Banner Grabbing * JSON 数据处理 * 错误处理 * 命令行界面开发 ## 未来改进 * 支持 CSV 导出 * UDP 端口扫描 * 使用 `argparse` 处理命令行参数 * 自定义超时配置 * 彩色终端输出 * 支持 IPv6 ## 学习成果 这个项目巩固了我对 TCP 通信、Socket 编程、使用线程池的并发执行、服务识别以及基本网络侦察技术的理解,同时构建了一个实用的命令行网络工具。
标签:Homebrew安装, Python, TCP/IP, 插件系统, 数据统计, 无后门, 服务器安全, 端口扫描, 网络工具, 逆向工具