用python写一份端口扫描
时间: 2024-10-14 10:14:33 浏览: 25
在Python中,我们可以使用socket库来进行端口扫描。一个简单的例子是通过尝试连接到每个目标端口并检查是否开放。下面是一个基础的TCP端口扫描脚本:
```python
import socket
def scan_port(host, port_range):
for port in port_range:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5) # 设置超时时间,这里设为5秒
try:
result = sock.connect_ex((host, port))
if result == 0: # 连接成功,表示端口开放
print(f"Port {port} is open on host {host}")
except (socket.timeout, ConnectionRefusedError):
pass
finally:
sock.close()
# 使用示例:扫描1-1000之间的所有端口
scan_port('example.com', range(1, 1001))
相关问题
用python写一份简单的可视化界面的端口扫描
在Python中,我们可以使用一些库如`tkinter`创建一个基本的图形用户界面(GUI),结合`socket`库来进行端口扫描。下面是一个简单示例,展示如何编写一个基本的命令行风格的UI来显示扫描结果:
```python
import tkinter as tk
import socket
def scan_port(host, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
result = sock.connect_ex((host, port))
if result == 0:
status_label.config(text=f"Port {port} is open")
else:
status_label.config(text=f"Port {port} is closed")
except Exception as e:
status_label.config(text=str(e))
finally:
sock.close()
# 创建窗口
root = tk.Tk()
root.title("Port Scanner")
# 显示输入框和扫描按钮
host_entry = tk.Entry(root)
host_entry.pack(pady=5)
scan_button = tk.Button(root, text="Scan", command=lambda: scan_port(host_entry.get(), int(port_var.get())))
scan_button.pack(pady=5)
# 显示结果标签
status_label = tk.Label(root, text="")
status_label.pack()
# 设置默认端口变量
port_var = tk.StringVar()
default_port = 80
port_entry = tk.Entry(root, textvariable=port_var, width=4)
port_entry.insert(0, str(default_port))
port_entry.pack()
root.mainloop()
```
这个程序会在用户输入主机名和选择端口号后尝试连接到该端口,并在结果标签上显示结果。注意这只是一个基础版本,实际应用可能需要更复杂的错误处理和用户体验。
请给我提供一份用python编写的扫描UDP端口的脚本
以下是一个用Python编写的扫描UDP端口的脚本:
```python
import socket
ip_address = input("请输入要扫描的IP地址:")
start_port = int(input("请输入起始端口号:"))
end_port = int(input("请输入结束端口号:"))
for port in range(start_port, end_port+1):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(2)
result = sock.connect_ex((ip_address, port))
if result == 0:
print(f"端口号{port}是开放的")
sock.close()
```
注意,此脚本仅限于在自己拥有合法授权的网络中进行使用。如有非法使用行为,后果自负。
阅读全文