ARP扫描:检测指定IP网段中哪些主机是在线的,并获取它们的MAC地址
from scapy.all import *
import argparse
import threading
import time
import logging
# 解析CIDR格式的网段,并返回IP地址列表
# >接受一个CIDR格式的网段作为输入(例如192.168.1.0/24)。
# >将网段解析为IP地址列表。
# >通过子网掩码长度计算IP地址范围,并生成该网段内所有可能的IP地址。
def Parse_IP(targets):
"""
将CIDR格式的网段字符串转换为IP地址列表。
:param targets: CIDR格式的网段字符串,例如"192.168.1.1/24"
:return: IP地址列表
"""
_split = targets.split('/') # 按斜杠分割字符串,得到网络地址和子网掩码长度
first_ip = _split[0] # 获取网络地址
ip_split = first_ip.split('.') # 按点分割网络地址,得到各部分的数字
# 生成IP地址范围
ipv4 = range(int(ip_split[3]), int(ip_split[3]) + (2 ** (32 - int(_split[1]))))
# 构建IP地址列表
addr = [f"{ip_split[0]}.{ip_split[1]}.{ip_split[2]}.{p}" for p in ipv4]
return addr
# 使用ARP协