网络安全必备工具之 Python 端口扫描器
Python 是一种功能强大的编程语言,可以用于快速开发网络安全工具。其中,端口扫描器是一种常见的工具,用于扫描目标主机开放的端口,并确定哪些服务在运行。在本文中,我们将介绍如何使用 Python 编写一个简单的端口扫描器,并演示如何使用它来扫描指定的 IP 地址。
实现端口扫描器的关键是使用 Python 的 socket 模块。该模块提供了一个 Socket 类,用于创建 TCP 客户端和服务器。我们可以使用它来连接目标主机的端口,并检查是否有服务在运行。
下面是一个简单的端口扫描器程序,它将扫描指定 IP 地址的常用端口,并报告哪些端口被打开:
import socket # 定义要扫描的端口 common_ports = [21, 22, 23, 25, 53, 80, 110, 443, 3306] # 定义要扫描的 IP 地址 target = "127.0.0.1" # 创建 socket 连接并扫描指定端口 for port in common_ports: client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.settimeout(0.5) try: status = client.connect_ex((target, port)) if status == 0: print(f"Port {port} is open") else: print(f"Port {port} is closed") except: print(f"Port {port} is filtered") client.close()
在上面的代码中,我们先定义一个常用端口列表和目标 IP 地址。然后,我们使用 for 循环遍历整个端口列表,并在每个端口上创建一个 Socket 连接。对于每个连接,我们使用 connect_ex 方法尝试连接到目标主机。如果连接成功,我们将打印出该端口的开放状态。如果连接失败,则说明该端口是关闭的或被阻止了。
需要注意的是,我们在创建 Socket 连接时使用了 settimeout 方法,以确保连接不会超时。此外,我们还在 try-except 块中捕获异常,以处理可能的运行时错误。
在执行上述代码后,您将得到以下输出:
Port 21 is closed Port 22 is closed Port 23 is closed Port 25 is closed Port 53 is closed Port 80 is open Port 110 is closed Port 443 is closed Port 3306 is closed
从输出结果可以看出,只有 80 端口是开放的,其他端口都是关闭的。
总结:
在本文中,我们介绍了如何使用 Python 编写一个简单的端口扫描器,并使用 socket 模块连接到指定的 IP 地址和端口。请记住,在实际使用中,您需要谨慎地扫描目标主机,并遵守相应的法律和规定。
相关文章