MST

星途 面试题库

面试题:Python网络安全之端口扫描实现

请使用Python编写一个简单的端口扫描程序,能够扫描指定IP地址的常见端口(如22、80、443等),并判断端口是否开放。要求使用socket模块,并处理可能出现的异常。
46.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
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秒,并处理了可能出现的异常。