NarendraVB/secure-port-scanner
GitHub: NarendraVB/secure-port-scanner
一个基于 Python 的模块化多线程 TCP 端口扫描器,通过 TCP Connect 方式探测端口开放状态并抓取服务 Banner,旨在帮助开发者学习网络安全底层概念。
Stars: 0 | Forks: 0
# 🔍 安全端口扫描器
一个模块化、多线程的 TCP Connect 端口扫描器,使用 Python 构建。
本项目作为 **CyberSpec** 学习路线的一部分而开发,旨在了解如何发现网络服务、TCP 通信的工作原理,以及 Nmap 等专业安全工具如何执行主机枚举。
# 功能
- TCP Connect 扫描
- 多线程扫描
- 端口范围支持
- 端口列表解析
- 输入验证
- Banner Grabbing
- 基础 HTTP 服务检测
- 使用 argparse 构建的专业 CLI
- 模块化架构
- 可配置超时
- 可配置线程池
# 项目结构
```
secure-port-scanner/
│
├── banner/
│ ├── grabber.py
│ └── http.py
│
├── cli/
│
├── networking/
│ └── socket_client.py
│
├── scanner/
│ └── scanner.py
│
├── tests/
│
├── utils/
│ ├── port_parser.py
│ └── validators.py
│
├── main.py
├── requirements.txt
└── README.md
```
# 工作原理
扫描器执行 **TCP Connect 扫描**。
```
User
│
▼
CLI
│
▼
Port Parser
│
▼
Scanner
│
▼
Thread Pool
│
▼
TCP Connection
│
▼
Banner Detection
│
▼
Results
```
# 扫描工作流程
对于每个目标端口:
```
Validate Input
│
▼
Create TCP Connection
│
▼
Connection Successful?
│
┌────┴─────┐
│ │
No Yes
│ │
▼ ▼
Closed Grab Banner
│ │
└────┬─────┘
▼
Store Result
```
# 使用技术
- Python 3
- socket
- argparse
- concurrent.futures
- ThreadPoolExecutor
# 使用方法
扫描特定端口
```
python main.py scanme.nmap.org -p 22,80,443
```
扫描范围
```
python main.py scanme.nmap.org -p 1-1024
```
自定义超时
```
python main.py scanme.nmap.org -p 80 --timeout 2
```
自定义线程数
```
python main.py scanme.nmap.org -p 1-1000 --threads 100
```
显示帮助
```
python main.py --help
```
# 示例输出
```
===== Scan Results =====
Port 22
Status : OPEN
Banner : SSH-2.0-OpenSSH_9.6
Port 80
Status : OPEN
Banner : nginx
Port 443
Status : OPEN
Banner : HTTP (No Server Header)
```
# 学到的安全概念
- TCP/IP
- TCP 三次握手
- 客户端与服务端
- TCP Connect 扫描
- 端口
- Socket 编程
- Banner Grabbing
- HTTP 请求
- 服务检测
- 线程池
- 输入验证
- 资源所有权
- 分层架构
- 安全软件设计
# 与 Nmap 的对比
| 功能 | 本项目 | Nmap |
|----------|-------------|-------|
| TCP Connect 扫描 | ✅ | ✅ |
| 多线程 | ✅ | ✅ |
| Banner Grabbing | ✅ 基础 | ✅ 高级 |
| HTTP 检测 | ✅ | ✅ |
| SYN 扫描 | ❌ | ✅ |
| UDP 扫描 | ❌ | ✅ |
| 操作系统检测 | ❌ | ✅ |
| NSE 脚本 | ❌ | ✅ |
本项目有意侧重于理解底层的网络概念,而不是为了取代 Nmap。
# 未来改进
- HTTPS 检测
- JSON 输出
- CSV 导出
- 进度条
- 彩色输出
- IPv6 支持
- UDP 扫描器
- SYN 扫描器
- 服务版本检测
- 日志记录
# 免责声明
本软件仅供教育目的和授权的安全评估使用。
未经许可,请勿扫描系统。
未经授权的扫描可能违反组织政策或适用法律。
# 许可证
本项目是我的 CyberSec 学习路线的一部分。
标签:Banner抓取, DNS枚举, Python, TCP协议, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全工具, 网络扫描