面试题答案
一键面试import socket
def port_scan(ip, ports):
open_ports = []
for port in ports:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((ip, port))
if result == 0:
open_ports.append(port)
sock.close()
except socket.error as e:
print(f"扫描端口 {port} 时出错: {e}")
return open_ports
if __name__ == "__main__":
target_ip = "127.0.0.1"
common_ports = [22, 80, 443]
open_ports = port_scan(target_ip, common_ports)
if open_ports:
print(f"开放的端口: {open_ports}")
else:
print("没有发现开放的端口")
上述代码定义了一个port_scan
函数,用于扫描指定IP地址的一系列端口,判断哪些端口是开放的。在__main__
部分,设置了目标IP和要扫描的常见端口列表,调用port_scan
函数进行端口扫描,并输出开放的端口列表。代码中使用了socket
模块,设置了连接超时为1秒,并处理了可能出现的异常。