Arnav-Y/Port_Scanner
GitHub: Arnav-Y/Port_Scanner
基于 Python socket 库的 TCP 端口扫描工具,提供单线程与多线程两种版本,用于检测目标 IP 的开放端口及对应服务。
Stars: 0 | Forks: 0
# Python 端口扫描器
一个使用 `socket` 库构建的 TCP 端口扫描器。
提供两个版本 —— 单线程和多线程。
这两个版本都会按顺序逐行打印开放的端口。
## 版本
| 文件 | 速度 | 工作原理 |
|---|---|---|
| `port_scanner.py` | 较慢 | 一次扫描一个端口,为关闭的端口打印点号 |
| `port_scanner_fast.py` | 快速 | 使用线程同时扫描所有端口 |
## 如何运行
```
python3 port_scanner.py
```
```
python3 port_scanner_fast.py
```
程序在运行时会提示你输入目标 IP:
```
Enter the IP: 192.168.1.1
```
要更改端口范围或超时时间,请编辑任一文件顶部的配置:
```
start_port = 1
end_port = 1024
timeout = 0.5
```
## 示例输出
```
==================================================
Port Scanner
==================================================
Target IP : 192.168.1.1
Port Range : 1 - 1024
Started at : 2024-06-18 10:30:00
--------------------------------------------------
.......................................
[OPEN] port 22 ( ssh )
[OPEN] port 80 ( http )
[OPEN] port 443 ( https )
==================================================
Scan Complete. 3 open port(s) found.
==================================================
```
## 涵盖概念
| 概念 | 出现位置 |
|---|---|
| TCP 连接 | `socket.connect_ex()` —— 尝试建立连接 |
| 端口状态 | 返回值为 `0` 表示开放,其他值表示关闭 |
| 超时 | `settimeout()` 防止在无响应的端口上挂起 |
| 服务映射 | `getservbyport()` 查找 IANA 服务名称 |
| 排序输出 | `open_ports.sort()` 按顺序逐行打印结果 |
| 多线程 | `threading.Thread` 同时启动所有 1024 个扫描 |
| 线程安全 | `threading.Lock()` 防止对共享列表产生竞态条件 |
| 线程同步 | `t.join()` 在打印前等待所有线程完成 |
## 法律与道德声明
## 构建工具
- Python 3
- `socket`(内置)
- `datetime`(内置)
- `threading`(内置 —— 仅限快速版本)
标签:Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 网络编程, 逆向工具