python端口扫描工具
时间: 2025-01-05 11:35:55 浏览: 10
### Python端口扫描工具实现
为了创建一个简单的Python端口扫描工具,可以利用`socket`库中的功能来检测目标主机上特定端口的状态。下面是一个基本的端口扫描器框架:
#### 创建Socket对象并初始化参数
通过定义类的方法接收IP地址以及要测试的最小最大端口号范围作为输入。
```python
import socket
class PortScanner:
def __init__(self, ip, port_min=0, port_max=65535):
self.ip = ip
self.port_min = port_min
self.port_max = port_max
```
#### 使用Connect_Ex方法尝试连接端口
对于每一个待测端口,使用`connect_ex()`函数发起非阻塞式的TCP三次握手请求;当返回值等于零时表示成功建立连接即该端口开放。
```python
def scan_port(self, port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((self.ip, port))
if result == 0:
print(f"Port {port}: Open")
sock.close()
return result == 0
except Exception as e:
print(e)
return False
```
#### 批量扫描多个端口
遍历指定范围内所有的整数代表不同的端口号,并调用上述单个端口扫描逻辑依次验证其状态。
```python
def run_scan(self):
open_ports = []
for port in range(self.port_min, self.port_max + 1):
if self.scan_port(port):
open_ports.append(port)
if not open_ports:
print("No ports are open.")
else:
print(f"The following ports are open: {open_ports}")
```
此代码片段展示了如何构建一个简易版的命令行端口扫描程序[^4]。需要注意的是,在实际部署前应当充分考虑法律风险与道德责任,确保仅针对拥有合法授权的目标执行此类操作。
阅读全文