python 实现的IP 存活扫描脚本

1. 简介

IP存活扫描是一种检测网络中活动主机的技术,通过向目标IP地址发送请求,判断是否有响应来确定主机是否存活。Python是一种强大的编程语言,具备丰富的网络编程库和功能,可以用来实现IP存活扫描脚本。本文将介绍如何使用Python实现IP存活扫描,并提供详细的代码示例。

2. IP存活扫描原理

IP存活扫描的原理很简单,就是通过发送网络请求(例如ICMP Ping或TCP SYN)到目标IP地址,然后等待目标主机的响应。如果收到响应,就可以确定目标主机是存活的。

3. 实现IP存活扫描的Python代码

3.1 ICMP Ping方式

ICMP Ping方式是一种常用的IP存活扫描方式,使用Python可以很方便地实现。下面是使用Python的ping库实现ICMP Ping方式的IP存活扫描的示例代码:

import ping

def ip_scan_icmp_ping(ip):

result = ping.quiet_ping(ip, timeout=2, count=1)

if result.success:

print(ip, "is alive")

else:

print(ip, "is not alive")

# 使用示例

ip_scan_icmp_ping("192.168.0.1")

ip_scan_icmp_ping("192.168.0.2")

上述代码中使用了Python的ping库,该库提供了简单易用的ICMP Ping功能。通过调用quiet_ping函数可以发送ICMP Ping请求,并将目标IP的结果保存在result变量中。然后根据result.success的值来判断目标主机是否存活。

3.2 TCP SYN方式

TCP SYN方式也是一种常用的IP存活扫描方式,同样可以使用Python来实现。下面是使用Python的socket库实现TCP SYN方式的IP存活扫描的示例代码:

import socket

def ip_scan_tcp_syn(ip, port):

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.settimeout(2)

try:

s.connect((ip, port))

print(ip, "is alive")

except Exception as e:

print(ip, "is not alive")

s.close()

# 使用示例

ip_scan_tcp_syn("192.168.0.1", 80)

ip_scan_tcp_syn("192.168.0.2", 80)

上述代码中使用了Python的socket库,该库提供了底层的网络编程功能。通过创建一个TCP套接字s,然后调用s.connect函数来建立与目标IP和端口的连接。如果连接成功,则表示目标主机存活;如果连接异常,则表示目标主机不存活。

3.3 扫描多个IP

上述示例代码只展示了如何扫描单个IP地址,但实际应用中通常需要扫描多个IP地址。下面是一个使用循环扫描多个IP地址的示例代码:

def ip_range_scan(ip_range):

ip_start, ip_end = ip_range.split("-")

ip_start_parts = [int(part) for part in ip_start.split(".")]

ip_end_parts = [int(part) for part in ip_end.split(".")]

for a in range(ip_start_parts[0], ip_end_parts[0]+1):

for b in range(ip_start_parts[1], ip_end_parts[1]+1):

for c in range(ip_start_parts[2], ip_end_parts[2]+1):

for d in range(ip_start_parts[3], ip_end_parts[3]+1):

ip = f"{a}.{b}.{c}.{d}"

ip_scan_icmp_ping(ip)

# 使用示例

ip_range_scan("192.168.0.1-192.168.0.10")

上述代码中使用了4层循环来遍历指定的IP范围,然后调用ip_scan_icmp_ping函数来进行ICMP Ping扫描。通过这种方式可以扫描指定范围内的多个IP地址。

4. 总结

本文介绍了使用Python实现IP存活扫描的方法,通过分别使用ICMP Ping和TCP SYN方式,可以根据目标主机的响应情况判断其存活状态。在实际应用中,可以根据需要选择合适的方式和工具来进行IP存活扫描。

后端开发标签