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, 云原生安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 逆向工具, 隐私保护