Susan367760/python-port-scanner
GitHub: Susan367760/python-port-scanner
一个使用 Python 标准库构建的多线程 TCP 端口扫描器,通过并发检测开放端口并抓取服务 Banner 来实现网络侦察自动化。
Stars: 0 | Forks: 0
# 多线程端口扫描与 Banner 抓取工具 (Python)





一个基于 Python 的**多线程端口扫描器**,展示了在 **socket 编程、TCP/IP 网络、多线程以及 Banner 抓取**方面的实践知识。该应用程序可以扫描目标主机,识别开放的 TCP 端口,并尝试获取运行在这些端口上的服务 Banner。
# 概述
端口扫描是网络侦察阶段执行的首要步骤之一。安全专业人员使用端口扫描器来发现开放端口、识别正在运行的服务,并评估系统的安全状况。
本项目演示了如何仅使用 Python 内置库来实现该过程的自动化。
该扫描器支持:
- 将主机名解析为 IP 地址
- 使用多线程同时扫描多个端口
- 检测开放的 TCP 端口
- 尝试进行 Banner 抓取
- 在简洁的终端界面中展示结果
# 功能
- ✅ 多线程 TCP 端口扫描
- ✅ Banner 抓取
- ✅ 可配置的端口范围
- ✅ 可配置的线程数量
- ✅ 主机名解析
- ✅ 轻量级(无需第三方库)
- ✅ 对初学者友好的 Python 实现
# 项目结构
```
python-port-scanner/
│
├── port_scanner.py
├── README.md
└── screenshots/
└── port_scanner_output.png
```
# 环境要求
- Python 3.8+
完全使用 Python 的标准库构建:
- socket
- threading
- queue
- argparse
无需安装任何额外的包。
# 安装说明
克隆仓库:
```
git clone https://github.com/Susan367760/python-port-scanner.git
```
进入项目目录:
```
cd python-port-scanner
```
# 使用方法
### 扫描 localhost
```
python port_scanner.py 127.0.0.1
```
### 扫描自定义端口范围
```
python port_scanner.py 127.0.0.1 -s 20 -e 100
```
### 扫描主机名
```
python port_scanner.py scanme.nmap.org -s 20 -e 100
```
# 示例输出
```
=======================================================
Python Multi-threaded Port Scanner
=======================================================
Target : 127.0.0.1
IP Address : 127.0.0.1
Port Range : 20-100
Threads : 100
=======================================================
[OPEN] Port 22
Banner: SSH-2.0-OpenSSH_8.2
[OPEN] Port 80
Banner: HTTP Service
=======================================================
Scan Complete
=======================================================
Port 22 OPEN
Banner : SSH-2.0-OpenSSH_8.2
Port 80 OPEN
Banner : HTTP Service
=======================================================
```
# 工作原理
```
Target Host
│
▼
Resolve Hostname to IP Address
│
▼
Create Queue of Target Ports
│
▼
Launch Multiple Worker Threads
│
▼
Attempt TCP Connection to Each Port
│
┌──────────┴──────────┐
▼ ▼
Port Open Port Closed
│ │
▼ ▼
Attempt Banner Ignore
Grabbing
│
▼
Display Open Ports
│
▼
Scan Complete
```
# 涉及的网络概念
本项目展示了对以下内容的实践理解:
- TCP/IP 网络
- Socket 编程
- 端口扫描
- Banner 抓取
- 多线程
- 主机名解析
- 网络侦察
- 命令行界面 (CLI)
# 💻 使用的技术
- Python 3
- Socket 库
- Threading
- Queue
- argparse
- TCP/IP 网络
# 学习成果
通过本项目,我加深了对以下知识的理解:
- Python socket 编程
- 使用线程的并发编程
- 网络服务发现
- TCP 连接建立
- Banner 抓取技术
- 网络安全侦察
- 使用 Python 实现自动化
# 未来改进
未来版本可能包括:
- UDP 端口扫描
- IPv6 支持
- 服务版本检测
- 操作系统指纹识别
- 生成 JSON 报告
- 导出 CSV 报告
- 生成 HTML 报告
- 进度条
- 使用 Tkinter 或 PyQt 构建 GUI
- 与 Nmap 集成
- 使用 CVE 数据库进行漏洞查询
- 实时扫描仪表板
# 展示的技能
- Python 编程
- 网络安全
- 网络安全
- TCP/IP
- Socket 编程
- 多线程
- 自动化
- CLI 开发
- 问题解决
# 作品集项目
本项目是我的网络安全作品集的一部分,我在其中构建了实用工具以提升我在以下领域的技能:
- 网络安全
- Python 自动化
- 云计算
- 网络
- 软件开发
# 作者
## Susan Maina
计算机科学理学学士
人民大学
### GitHub
https://github.com/Susan367760
### LinkedIn
https://www.linkedin.com/in/mainasusan/
# 与我联系
我热衷于在以下领域构建解决方案:
- 网络安全
- 云计算
- Python 自动化
- 网络安全
- 软件工程
欢迎与我建立联系!
- **GitHub:** https://github.com/Susan367760
- **LinkedIn:** https://www.linkedin.com/in/mainasusan/
# 如果您觉得这个项目对您有帮助...
# 许可证
本项目基于 **MIT License** 授权。
您可以出于教育和个人目的自由使用、修改和分发本项目。