malek2minhaaz/PortScannerTool
GitHub: malek2minhaaz/PortScannerTool
PortScanner 是一款纯 Python 实现的网络端口扫描与安全风险分析工具,集成了操作系统指纹识别、CVE 参考及自动化报告生成功能。
Stars: 1 | Forks: 0
#在你的 kali linux 终端中 clone 此 repo
# PortScannerTool
# PortScanner 是一款基于 Python 从零开始使用 socket 编程开发的智能网络安全工具。与传统的端口扫描器不同,它将 TCP/UDP 端口扫描、banner grabbing、操作系统指纹识别、安全风险分析、漏洞利用感知和自动化报告生成结合在一个单一的应用程序中。
# ⚡ Port Scanner — 智能端口扫描器与服务风险分析器
**实习项目 | 网络安全 | 使用 Python 从零构建**
## 🔍 是什么让 Port Scanner 不同于 Nmap?
| 功能 | Nmap | Port Scanner |
|---|---|---|
| 技术 | 基于 C 的二进制文件,packet crafting | 纯 Python socket 编程 |
| 风险评分 | 无(仅显示开放端口) | 受 CVSS 启发的 0–10 分制评分 |
| CVE 参考 | 无 | 每个服务内置 CVE 数据库 |
| 修复指南 | 无 | 针对每个端口的详细修复说明 |
| 操作系统检测方法 | Packet fingerprinting | TTL + TCP Window + 端口特征 |
| 报告格式 | XML/grepable | HTML(dashboard)+ JSON + TXT |
| Banner 分析 | 基础 | 基于 Regex 的服务识别 |
## 📁 项目结构
```
Port Scanner/
├── portscanner.py # Main CLI entry point
├── setup.sh # Setup & syntax check script
├── requirements.txt # Dependencies (stdlib only!)
├── README.md
├── core/
│ ├── scanner.py # TCP + UDP port scanner
│ ├── banner_grab.py # Service banner grabber
│ ├── risk_engine.py # Risk scoring & CVE database
│ └── os_fingerprint.py # OS detection (TTL/Window/Port)
├── utils/
│ ├── display.py # Terminal output & colors
│ └── logger.py # Scan session logger
├── reports/
│ └── report_gen.py # HTML / TXT / JSON report generator
├── logs/ # Auto-created: scan_history.log
└── reports/ # Auto-created: output reports
```
## ⚙️ 设置
```
# 1. 克隆 / 解压项目
cd Port Scanner
# 2. 运行 setup (检查 Python,创建目录,验证语法)
chmod +x setup.sh
./setup.sh
# 3. 验证
python3 portscanner.py --help
```
**要求:** 仅需 Python 3.8+。无需 pip 安装。全部使用标准库。
## 🚀 用法 — 所有命令
### 基础扫描(前 1024 个端口)
```
python3 portscanner.py -t 192.168.1.1
```
### 扫描指定端口
```
python3 portscanner.py -t 192.168.1.1 -p 22,80,443,3306,3389
```
### 扫描端口范围
```
python3 portscanner.py -t 192.168.1.1 -p 1-500
```
### 全端口扫描(所有 65535 个端口)
```
python3 portscanner.py -t 192.168.1.1 -p 1-65535 --threads 200
```
### UDP 扫描
```
python3 portscanner.py -t 192.168.1.1 --scan-type udp -p 53,67,68,161,162
```
### TCP + UDP 组合扫描
```
python3 portscanner.py -t 192.168.1.1 --scan-type both
```
### 启用 Banner Grabbing
```
python3 portscanner.py -t 192.168.1.1 --banner
```
### 启用风险分析
```
python3 portscanner.py -t 192.168.1.1 --risk
```
### 启用操作系统检测
```
python3 portscanner.py -t 192.168.1.1 --os-detect
```
### 完整扫描(启用所有功能)
```
python3 portscanner.py -t 192.168.1.1 --full-scan
```
### 生成 HTML 报告
```
python3 portscanner.py -t 192.168.1.1 --full-scan --report html
```
### 生成所有报告(HTML + TXT + JSON)
```
python3 portscanner.py -t 192.168.1.1 --full-scan --report all
```
### 详细模式(同时显示关闭的端口)
```
python3 portscanner.py -t 192.168.1.1 --verbose
```
### 自定义输出目录
```
python3 portscanner.py -t 192.168.1.1 --report html --output-dir /tmp/scans
```
### 无颜色输出(用于 piping/logging)
```
python3 portscanner.py -t 192.168.1.1 --no-color > scan_output.txt
```
### 自定义超时与线程
```
python3 portscanner.py -t 192.168.1.1 -p 1-1024 --threads 150 --timeout 2.0
```
### 使用主机名扫描
```
python3 portscanner.py -t scanme.nmap.org -p 1-100 --banner --risk
```
## 🎯 完整演示命令(最适合实习演示)
```
python3 portscanner.py \
-t 192.168.1.1 \
-p 1-1024 \
--full-scan \
--threads 100 \
--timeout 1.5 \
--report all \
--output-dir reports \
--verbose
```
## 📊 功能详解
### 1. TCP 端口扫描器
- 使用 `concurrent.futures.ThreadPoolExecutor` 实现多线程
- 完整的 TCP connect 扫描(通过 `socket.connect_ex` 完成三次握手)
- 状态:OPEN / CLOSED / FILTERED
- 实时进度条
### 2. UDP 端口扫描器
- 发送特定服务的 probe 数据包(DNS、SNMP probe)
- 状态:OPEN / CLOSED / OPEN|FILTERED
- 处理 ICMP Port Unreachable 响应
### 3. Banner Grabber
- 连接开放端口并发送协议 probe
- 针对特定服务的 probe:HTTP HEAD、SMTP EHLO、Redis PING 等
- 基于 Regex 的服务识别:SSH、Apache、Nginx、MySQL、Redis 等
### 4. 操作系统指纹识别
- **TTL 分析**:系统 ping → 解析 TTL → 映射到操作系统(Windows=128,Linux=64,Cisco=255)
- **TCP Window**:Socket 缓冲区大小指纹识别
- **端口特征**:探测 Windows 特定(135、445、3389)和 Linux 特定(22、111)端口
### 5. 风险引擎
- 每个端口受 CVSS 启发的评分(0.0–10.0)
- 风险等级:CRITICAL / HIGH / MEDIUM / LOW / INFO
- 每个服务的 CVE 参考
- 详细的修复步骤
- 整体安全态势评级
### 6. 报告生成器
- **HTML**:带有暗色主题的完整网络安全 dashboard
- **TXT**:用于终端/logging 的纯文本报告
- **JSON**:用于集成/解析的结构化数据
## 🔐 风险评分示例
| 端口 | 服务 | 分数 | 等级 |
|------|---------|-------|-------|
| 23 | Telnet | 9.8 | CRITICAL |
| 3389 | RDP | 9.8 | CRITICAL |
| 6379 | Redis | 9.8 | CRITICAL |
| 445 | SMB | 9.5 | CRITICAL |
| 3306 | MySQL | 8.5 | HIGH |
| 21 | FTP | 8.0 | HIGH |
| 22 | SSH | 5.0 | MEDIUM |
| 80 | HTTP | 5.0 | MEDIUM |
| 443 | HTTPS | 2.0 | LOW |
## 🧪 在 Localhost 上测试
```
# 针对你自己的机器进行安全测试
python3 portscanner.py -t 127.0.0.1 -p 1-1024 --full-scan --report html
```
## 📚 展示的技术技能
- **Python Socket 编程**:`socket`、`AF_INET`、`SOCK_STREAM`、`SOCK_DGRAM`
- **多线程**:`ThreadPoolExecutor`、`threading.Lock`
- **TCP/UDP 协议**:端口状态,三次握手,ICMP
- **服务识别**:Banner regex,probe 数据包
- **操作系统检测**:TTL 分析,window sizing
- **安全概念**:CVE,CVSS,风险评分,修复
- **报告生成**:从零生成 HTML,JSON,TXT
## ⚠️ 法律声明
Port Scanner 仅用于**授权的网络安全测试**。
在扫描任何非您拥有的网络或系统之前,请务必获得书面许可。
未经授权的端口扫描可能违反计算机犯罪法规。
*为网络安全实习项目打造 | Port Scanner v1.0*
标签:Banner抓取, Python, 实时处理, 密码管理, 插件系统, 数据统计, 文档结构分析, 无后门, 服务器安全, 端口扫描, 网络安全, 自动化报告, 逆向工具, 隐私保护