JEFFERSON-007/Port-Scanner

GitHub: JEFFERSON-007/Port-Scanner

一个纯 Python 标准库实现的高并发端口扫描器,用于授权网络资产验证并自动生成结构化扫描报告。

Stars: 0 | Forks: 0

# 高并发端口扫描器与模拟框架 一个模块化、生产级别的 Python 模拟平台,旨在演示高级网络编程、并发线程调度、动态速度计算和数据序列化。该工具专为学术展示、实习作品集以及授权的网络资产验证而构建。 ## ⚠️ 安全与授权使用声明 ## 🌟 核心功能 - **并发执行引擎**:利用 Python 原生的 `ThreadPoolExecutor` 安全处理多达数百个并发连接任务。 - **CIDR 与网络解析器**:使用 `ipaddress` 库自动解析并验证单个 IPv4 地址、域名以及整个子网块(例如 `192.168.1.0/24`)。 - **灵活的端口模式**:支持扫描单个端口、特定数字范围(例如 `20-1024`)、逗号分隔的自定义端口(`22,80,443`),或预配置的最常见网络服务数据库(`--top-ports`)。 - **动态统计与进度跟踪**:提供线程安全的 CLI 更新,包含计算出的完成百分比、实时更新的扫描速率(probes/sec)以及计算出的预计到达时间(ETA)。 - **服务 Banner 识别**:模拟开放端口典型的 daemon banner grabbing(例如 SSH 版本头、HTTP 服务器字符串、MySQL 版本 payload)。 - **标准化报告**:自动将扫描统计信息和主机数据序列化为 `reports/` 文件夹中结构化的 JSON 和 CSV 报告文件。 - **结构化操作日志**:将运行元数据、启动时间、扫描指标和 socket 超时事件记录到本地的 `scanner.log` 文件中。 ## 🛠️ 架构与项目布局 该框架遵循整洁架构指南,将数据模型、CLI 布局、业务操作和目标处理相互解耦。 ``` PortScanner/ ├── config.py # Port definitions, service mapping database, simulation settings ├── banner.py # ANSI CLI styling, ASCII brand banner, scan setup/summary dashboards ├── utils.py # CIDR parsing, input validation, DNS resolution, ETA calculators ├── report.py # CSV/JSON exporters and file logging operations ├── scanner.py # Thread Pool orchestrator, Progress Tracker, and Argument Parser CLI ├── requirements.txt # Standard dependency manifest (Standard Library only) └── reports/ # Generated scan results (automatically created) ``` ## 🚀 快速开始 ### 前置条件 - Python 3.11 或更高版本。 - 无需任何外部第三方依赖(100% 使用 Python 标准库)。 ### 安装说明 1. 将项目文件克隆或复制到您的系统工作区目录。 2. 验证 Python 编译以确认文件完整性: python -m py_compile scanner.py config.py banner.py utils.py report.py ## 📖 命令行用法 ``` # 显示帮助和完整的参数详情 python scanner.py --help # 扫描单个主机并使用详细日志记录针对特定端口进行扫描 python scanner.py -t localhost -p 22,80,443,3306,8080 --verbose # 使用 150 个线程和 1.5 秒 timeout 扫描主机的标准通用端口 python scanner.py -t 127.0.0.1 --top-ports --threads 150 --timeout 1.5 # 扫描整个 CIDR 网络块,并以 CSV 和 JSON 格式导出报告 python scanner.py -t 192.168.1.0/24 -p 80,443 -o scan_run_01 --json --csv ``` ## 📊 示例输出 ### CLI 执行面板 ``` ================================================================= SESSION SETUP & SCAN DASHBOARD ----------------------------------------------------------------- Target Specification: localhost Resolved Address: 127.0.0.1 Target Host Count: 1 host(s) Target Ports Count: 20 port(s) per host Concurrency Profile: 100 worker threads Socket Timeout: 1.0 second(s) Security Notice: Only run on authorized network assets. ================================================================= [*] Running simulation... Use Ctrl+C to abort. [+] Host: 127.0.0.1 Port: 22 State: Open Service: SSH (Secure Shell) Banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5 [+] Host: 127.0.0.1 Port: 80 State: Open Service: HTTP (Hypertext Transfer Protocol) Banner: Server: Apache/2.4.41 (Ubuntu) [+] Host: 127.0.0.1 Port: 443 State: Open Service: HTTPS (HTTP Secure) Banner: HTTP/1.1 200 OK\r\nServer: nginx/1.18.0 ================================================================= SCAN COMPLETION SUMMARY ----------------------------------------------------------------- Time Elapsed: 0.45 seconds Total Probes Sent: 20 Open Ports Found: 3 Filtered Ports: 2 Scan Speed Rate: 44.44 probes/sec ================================================================= [+] Session summary auto-exported to: reports\scan_20260625_214530.json ``` ## 🔮 未来的工程升级 对于这个作品集项目的未来版本,代码库在结构上已经准备好加入以下内容: 1. **Raw Sockets 集成**:使用底层 raw socket 操作(使用 Python 的 `socket.IPPROTO_RAW`)替换模拟层,在 root/administrator 权限下执行 SYN/隐蔽扫描。 2. **动态主机发现**:在开始端口扫描阶段之前,添加初始 ARP 请求或 ICMP 扫描阶段,以识别 CIDR 块内的存活目标。 3. **高级 OS 指纹识别**:检查响应数据包中的 TTL 值和 TCP 窗口大小,以预测目标操作系统。 ## 📄 许可证 本项目基于 MIT 许可证授权 - 有关详细信息,请查看 LICENSE 文件。
标签:DNS查询工具, Python, 云存储安全, 并发编程, 插件系统, 无后门, 端口扫描器, 网络扫描, 网络资产验证, 逆向工具