import subprocess
import re
import socket
from scapy.all import sr1, IP, ICMP
def get_mac_address(ip):
try:
# 执行arp命令来查找IP对应的MAC地址
result = subprocess.run(['arp', '-a'], capture_output=True, text=True, check=True)
output = result.stdout
# 解析输出,注意Windows上的输出格式可能与Linux不同
match = re.search(rf'{ip}\s+([0-9a-fA-F-]+)', output)
if match:
return match.group(1)
else:
return None
except subprocess.CalledProcessError as e:
print(f"Error: {e}")
return None
def ping(host):
# 创建一个ICMP请求数据包
packet = IP(dst=host)/ICMP()
# 发送数据包并接收响应
reply = sr1(packet, timeout=1, verbose=False)
# 检查是否收到回复
if reply is not None and reply.haslayer(ICMP):
return True
else:
return False
ip_address = "192.168.0.254"
mac_address = get_mac_address(ip_address)
print(f"MAC Address: {mac_address}")
print(f"IP: {ip_address}")
if ping(ip_address):
print(f"{ip_address} is active.")
else:
print(f"{ip_address} is die.")