LeandroCastilhoSilva/Port-Scanner
GitHub: LeandroCastilhoSilva/Port-Scanner
一个纯 Python 实现的 TCP 端口扫描器,支持多线程并发扫描并通过 banner grabbing 识别端口服务及版本信息。
Stars: 0 | Forks: 0
# 端口扫描器
一个用 Python 编写的 TCP 端口扫描器。它会测试计算机(IP 或域名),并告诉你哪些端口是开放的、端口上可能运行着什么服务,有时甚至能获取到程序版本。
我做这个项目是为了在实践中学习简单的网络扫描器是如何工作的。
## 重要警告
请仅在你自己拥有或被授权测试的计算机和网络上使用此程序。未经授权扫描他人的端口在某些国家可能构成犯罪。
## 功能
- 测试单个端口或一个端口范围(例如:20 到 1024)
- 同时测试多个端口,因此速度很快
- 显示每个端口最常见的服务名称(例如:端口 22 = SSH)
- 尝试读取服务的响应,这有时能获取到正在运行的程序版本
## 环境要求
- Python 3.10 或更高版本
无需安装任何额外的库,仅使用纯 Python。
## 使用方法
首先,进入 `src` 目录:
```
cd src
```
### 测试单个端口
```
python3 scanner.py 127.0.0.1 -p 22
```
这会测试你本机的 22 端口。
### 同时测试多个端口
```
python3 scanner.py 127.0.0.1 -p 1-1000
```
这会测试 1 到 1000 端口。
### 测试网络中的其他计算机
```
python3 scanner.py 192.168.1.10 -p 1-1000
```
将 `192.168.1.10` 替换为你要测试的计算机的 IP(前提是它是你自己的或已获授权)。
## 可用选项
| 选项 | 功能 | 默认值 |
|---|---|---|
| `target` | 计算机的 IP 或名称(必填) | - |
| `-p` 或 `--ports` | 单个端口或范围,例如:`22` 或 `1-1000` | 22 |
| `-t` 或 `--threads` | 同时测试多少个端口 | 50 |
| `--timeout` | 每个端口的等待超时时间,以秒为单位 | 1.0 |
使用所有选项的示例:
```
python3 scanner.py 127.0.0.1 -p 1-500 -t 100 --timeout 0.5
```
## 我在这个项目中学到了什么
- Python 中使用 sockets 的 TCP 连接是如何工作的
- 如何使用 threads 同时运行多个任务,以使程序运行更快
- 如何识别在端口上运行的服务(banner grabbing)
- 如何将严重错误(会终止程序)与小错误(仅发出警告并继续执行)区分开来
标签:Python, Scrypt密钥派生, TCP, 插件系统, 数据统计, 无后门, 服务指纹识别, 端口扫描, 网络安全, 网络工具, 逆向工具, 隐私保护