编写代码实现ARP的活跃主机发现,要求探测的目标主机实现固定和手工输入(单个或区间主机)和实现区间主机自动化ARP探测,共编写三种
时间: 2024-10-13 17:06:59 浏览: 27
arp主机和网关欺骗实现
ARP(Address Resolution Protocol)协议用于在IP网络中查找设备的物理地址(MAC地址)。要在Python中实现一个简单的ARP活跃主机发现功能,你可以创建一个脚本,该脚本会分别处理手动输入、固定主机和自动探测区间主机的情况。下面是一个基本的伪代码示例:
```python
import socket
from time import sleep
def discover_host(ip):
# 创建一个ARP请求报文
arp_request = (b'\x08\x06' + ip.packed + b'\x00\x01')
# 发送ARP请求
sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0806))
sock.send(arp_request)
# 接收响应
response = sock.recvfrom(512)
return response[0][1]
# 手动输入单个或区间主机
def manual_input():
host_range = input("请输入目标主机的IP范围(如192.168.1.1-10):")
hosts = [ip.strip() for ip in host_range.split('-')]
if len(hosts) == 2:
start, end = hosts
for i in range(int(start), int(end)+1):
discovered_ip = discover_host(socket.inet_aton(str(i)))
print(f"Host {i} 的MAC地址:{discovered_ip}")
else:
single_ip = hosts[0]
discovered_ip = discover_host(socket.inet_aton(single_ip))
print(f"Host {single_ip} 的MAC地址:{discovered_ip}")
# 固定主机探测
def fixed_host_detection(ip):
discovered_ip = discover_host(socket.inet_aton(ip))
print(f"固定主机 {ip} 的MAC地址:{discovered_ip}")
# 自动探测区间主机
def auto_detection(start_ip, end_ip):
for i in range(int(start_ip), int(end_ip)+1):
discovered_ip = discover_host(socket.inet_aton(str(i)))
print(f"Host {i} 的MAC地址:{discovered_ip}")
# 用户选择操作
print("请选择操作:")
print("1. 手动输入")
print("2. 固定主机探测")
print("3. 自动探测区间主机")
choice = int(input())
if choice == 1:
manual_input()
elif choice == 2:
fixed_host_detection(input("请输入固定IP:"))
elif choice == 3:
start = input("请输入起始IP:")
end = input("请输入结束IP:")
auto_detection(start, end)
阅读全文