Khushi200292/Multi-threaded-Port-Scanner
GitHub: Khushi200292/Multi-threaded-Port-Scanner
一个基于 Python 的多线程 TCP 端口扫描器,通过并发连接探测目标主机指定端口范围内的开放端口,主要用于教育目的和网络编程学习。
Stars: 0 | Forks: 0
# 多线程端口扫描器
# 多线程 TCP 端口扫描器
## 概述
本项目是一个基于 Python 的多线程 TCP 端口扫描器,它能够扫描目标主机上指定范围的端口,并识别哪些端口是开放的。该扫描器利用多线程来提高扫描速度,同时支持 IP 地址和主机名。
## 功能
* 扫用户自定义范围的 TCP 端口。
* 支持 IP 地址和域名。
* 使用多线程加快扫描速度。
* 扫描过程中显示开放和关闭的端口。
* 扫描完成后提供所有开放端口的汇总。
* 优雅地处理无效的主机名和连接错误。
## 环境要求
### Python 版本
* Python 3.8 或更高版本
### 所需模块
安装所需的包:
```
pip install IPy
```
### 使用的内置模块
* socket
* threading
* queue
## 项目结构
```
port-scanner/
│
├── scan.py
└── README.md
```
## 工作原理
1. 用户输入目标 IP 地址或主机名。
2. 用户指定要扫描的端口范围。
3. 程序验证目标主机。
4. 创建一个包含指定范围内所有端口的队列。
5. 启动多个线程以并发扫描端口。
6. 每个线程尝试与一个端口建立 TCP 连接。
7. 记录并显示开放的端口。
8. 所有线程完成后,显示开放端口的汇总。
## 运行程序
在项目目录中打开终端并运行:
```
python scan.py
```
## 示例
### 输入
```
Enter the target host IP or hostname: 127.0.0.1
Enter the range of ports to scan (eg. 1-200): 20-100
```
### 输出
```
Port 22: Open
Port 80: Open
Port 21: Closed
Port 23: Closed
Summary:
Port 22: Open
Port 80: Open
```
## 代码组件
### scan_ports()
此函数:
* 从队列中获取端口。
* 尝试与每个端口建立 TCP 连接。
* 识别端口是开放还是关闭。
* 将开放的端口存储在列表中。
### main()
此函数:
* 接收用户输入。
* 验证目标主机。
* 创建端口队列。
* 启动工作线程。
* 显示扫描结果。
## 错误处理
该程序处理以下情况:
* 无效的主机名。
* 网络连接错误。
* 无效的端口范围。
* 用户使用 Ctrl + C 中断。
## 限制
* 仅扫描 TCP 端口。
* 不执行服务检测。
* 在高延迟网络上可能较慢。
* 结果取决于防火墙和网络配置。
## 教育目的
本项目旨在用于教育目的,以演示:
* Socket 编程
* Python 中的多线程
* 队列管理
* 基本的网络扫描概念
请始终仅扫描您拥有或获得明确测试权限的系统网络。
## 作者
作为一个 Python 网络和多线程项目创建,用于学习端口扫描概念。
标签:Python, TCP协议, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 逆向工具