Python IP扫描实现教程

本文将教你如何使用Python实现IP扫描。IP扫描是一项常见的网络安全工作,可以用来发现主机的开放端口、识别服务以及检测潜在的安全风险。

1. 整体流程

在开始编写代码之前,我们需要先确定整个流程。下面是一个简单的表格,展示了实现IP扫描的基本步骤。

步骤 描述
步骤1 获取用户输入的IP地址范围
步骤2 创建一个扫描函数
步骤3 遍历IP地址范围
步骤4 对每个IP地址进行端口扫描
步骤5 输出扫描结果

现在让我们一步一步地实现这些步骤。

2. 获取用户输入的IP地址范围

首先,我们需要从用户那里获取IP地址范围。可以使用input()函数让用户输入IP地址范围,并将其保存到一个变量中。

ip_range = input("请输入IP地址范围(例如:192.168.0.1-192.168.0.100):")

3. 创建一个扫描函数

接下来,我们需要创建一个扫描函数,用于扫描指定IP地址的端口。可以使用Python的socket库来实现网络连接和端口扫描。

import socket

def scan_port(ip, port):
    try:
        # 创建一个socket对象
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 设置连接超时时间为1秒
        s.settimeout(1)
        # 连接到指定的IP地址和端口
        s.connect((ip, port))
        # 关闭连接
        s.close()
        return True
    except:
        return False

在上述代码中,我们使用socket.socket()函数创建了一个TCP套接字对象,并使用socket.settimeout()函数设置了连接超时时间为1秒。然后,我们尝试连接到指定的IP地址和端口。如果连接成功,则返回True;如果连接失败,则返回False。

4. 遍历IP地址范围

接下来,我们需要遍历用户输入的IP地址范围,并对每个IP地址进行端口扫描。可以使用split()函数将IP地址范围分割成起始IP地址和结束IP地址,然后使用循环遍历这个范围。

start_ip, end_ip = ip_range.split("-")

for i in range(int(start_ip.split(".")[-1]), int(end_ip.split(".")[-1]) + 1):
    ip = ".".join(start_ip.split(".")[:-1]) + "." + str(i)
    # 调用扫描函数
    result = scan_port(ip, 80)
    if result:
        print(f"IP地址 {ip} 的80端口开放")
    else:
        print(f"IP地址 {ip} 的80端口关闭")

在上述代码中,我们使用split()函数将用户输入的IP地址范围分割成起始IP地址和结束IP地址,并将其保存到变量start_ipend_ip中。然后,我们使用循环遍历这个范围,并在每次迭代中构造一个新的IP地址。最后,我们调用扫描函数scan_port()来扫描构造的IP地址的端口,并根据扫描结果输出相应的信息。

5. 输出扫描结果

最后,我们需要将扫描结果输出给用户。可以使用Python的print函数来实现。

result = scan_port(ip, 80)
if result:
    print(f"IP地址 {ip} 的80端口开放")
else:
    print(f"IP地址 {ip} 的80端口关闭")

在上述代码中,我们使用了一个条件语句来判断端口扫描的结果,并根据结果输出相应的信息。

总结

在本文中,我们学习了如何使用Python实现IP扫描。我们首先确定了整个流程,并编写了相应的代码实现每个步骤。