Quis-sum/PortScanner
GitHub: Quis-sum/PortScanner
一款用于探测网络主机开放端口和服务信息的扫描工具。
Stars: 0 | Forks: 0
# PortScanner
一个轻量级、无依赖的端口扫描工具,使用 Python 编写。支持定向扫描和全范围 TCP 扫描,具备自动主机名解析和结构化扫描摘要功能。旨在作为一个使用 Python `socket` 模块进行底层网络编程的实用演示。
## 功能
- 扫描**单个端口**、**多个端口**或**所有 65,535 个端口**
- 接受 **IP 地址**和**主机名**作为目标
- 自动进行**主机名解析**,在失败时优雅地回退至 `127.0.0.1`
- 结构化的**扫描摘要**,包括目标、端口范围、开始时间、结束时间和开放端口数量
- 能妥善处理键盘中断和连接错误
## 环境要求
- Python 3.x
- 无外部依赖 —— 仅使用 Python 标准库(`socket`、`sys`、`re`、`time`、`datetime`)
## 用法
### 语法
```
python shittyPortScanner.py [TARGET] [PORT(S)]
```
所有参数均为可选。如果省略,扫描器将以交互方式提示输入。
### 示例
**交互模式:**
```
python shittyPortScanner.py
```
**默认扫描 —— 端口 1 至 1023:**
```
python shittyPortScanner.py 192.168.1.1
```
*在提示输入端口时按 ENTER 键即可使用默认范围。*
**扫描特定端口:**
```
python shittyPortScanner.py 192.168.1.1 22 80 443
```
**全端口扫描 —— 端口 1 至 65535:**
```
python shittyPortScanner.py 192.168.1.1 -p-
```
**使用主机名扫描:**
```
python shittyPortScanner.py example.com 80 443
```
## 输出示例
```
============================================================
[+] TARGET: 192.168.1.1
[+] PORT(S): range(1, 1024)
[+] TIME STARTED: 2026-03-15 10:22:01.483921
============================================================
Scanning 192.168.1.1...
This might take a while...
Port 22 is open
Port 80 is open
============================================================
[+] TIME FINISHED: 2026-03-15 10:22:14.201384
[+] NO of OPEN PORT(S): 2
============================================================
```
## 技术说明
- 每次连接尝试都有 **1 秒的超时时间**。根据网络状况,扫描全端口范围可能需要几分钟。
- 如果主机名解析失败,扫描器将默认使用 `127.0.0.1`(localhost)并继续运行。
- 仅测试 **TCP** 连接(`SOCK_STREAM`)。UDP 端口不在此工具范围内。
## 免责声明
本工具仅供**教育目的和经授权的使用**。未经明确许可扫描系统在您所在的司法管辖区可能属于违法行为。在运行此工具之前,请务必确保您有权扫描任何目标。
## 作者
[Quis-sum](https://github.com/Quis-sum)
标签:Python, Socket编程, TCP/IP, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具