vaishnu-18/Python-Port-Scanner
GitHub: vaishnu-18/Python-Port-Scanner
一个轻量级多线程TCP端口扫描工具,支持速率限制和JSON输出,适合快速发现目标主机开放端口。
Stars: 0 | Forks: 0
# Python 端口扫描器
一个多线程的 **TCP 端口扫描器(使用 Python 编写)**,可扫描目标主机上的端口,支持配置并发数和速率限制。
该扫描器会验证输入、并发扫描端口,并将结果**输出到控制台和 JSON 文件**。
主入口点是 `portscanner.py`,它负责解析 CLI 参数、验证输入、执行扫描并存储结果。
# 功能特性
- 多线程端口扫描
- 全局连接尝试速率限制
- 输入验证,包括:
- IP 地址
- 端口
- 端口范围
- 输出文件名
- 简洁的控制台输出,显示常见服务名称
- 扫描结果导出为 JSON
- 日志支持
# 项目结构
```
Python-Port-Scanner
│
├── portscanner.py # Main CLI entry point
│
├── functions
│ ├── scan_iterator.py # Multithreaded scanning logic
│ ├── socket_connection.py# TCP connection to a port
│ ├── write_to_console.py # Console output formatting
│ ├── store_to_file.py # Save results to JSON
│ ├── validate_input.py # Input validation utilities
│ └── take_input.py # Interactive input (optional/testing)
│
└── README.md
```
# 安装说明
克隆仓库:
```
git clone https://github.com/vaishnu-18/python-port-scanner.git
cd python-port-scanner
```
无需外部依赖。
推荐的 Python 版本:
```
Python 3.10+
```
# 用法
使用 CLI 运行扫描器。
### 基本扫描
```
python portscanner.py -t 192.168.1.1 -p 80
```
### 扫描端口范围
```
python portscanner.py -t 192.168.1.1 -p 20-100
```
# CLI 参数
| 参数 | 描述 | 默认值 |
|--------|--------|--------|
| `-t`, `--target` | 目标 IPv4 地址 | 必需 |
| `-p`, `--ports` | 端口或端口范围 | 必需 |
| `-th`, `--threads` | 最大线程数 | 100 |
| `-r`, `--rate` | 每秒最大连接数 | 100 |
| `-ti`, `--timeout` | Socket 超时时间(秒) | 1.0 |
| `-o`, `--output` | 输出 JSON 文件 | scan_results.json |
示例:
```
python portscanner.py \
-t 192.168.1.1 \
-p 1-1024 \
-th 200 \
-r 300 \
-ti 0.5 \
-o results.json
```
# 示例输出
控制台输出:
```
Scan Results
------------------------------------------------------------
IP PORT STATUS COMMON PORT
------------------------------------------------------------
192.168.1.1 22 OPEN SSH
192.168.1.1 80 OPEN HTTP
192.168.1.1 443 CLOSED HTTPS
```
JSON 输出:
```
[
{
"ip": "192.168.1.1",
"port": 22,
"status": "OPEN"
}
]
```
# 日志
日志默认以 **INFO 级别** 启用。
示例:
```
INFO - Starting port scan on 192.168.1.1 ports 20-100
INFO - Port scan finished in 0.52 seconds
```
# 限制
- 仅支持 IPv4
- 仅支持 TCP 连接扫描
- 无服务检测或 Banner 抓取
- 无 UDP 扫描
# 教学目的
本项目演示了:
- socket 编程
- 使用 `ThreadPoolExecutor` 实现并发
- 速率限制
- 输入验证
- 模块化项目结构
# 许可证
MIT License
标签:API密钥检测, DNS枚举, DNS查询工具, Homebrew安装, JSON导出, Python, Python 3, Socket编程, TCP扫描, URL短链接分析, 密码管理, 情报分析, 插件系统, 文档结构分析, 无后门, 服务探测, 端口扫描器, 网络安全工具, 网络诊断, 输入验证, 逆向工具