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, 云存储安全, 并发编程, 插件系统, 无后门, 端口扫描器, 网络扫描, 网络资产验证, 逆向工具