我想制作一个网络扫描仪,将ARP请求发送到ff:ff:ff:ff:ff:ff:ff的广播mac地址。 我的书面代码从局域网中存在的所有设备获得响应,但是当我再次运行它时,与第一次扫描相比,它总是向我显示更少的设备。
def check_arping(ip):
arp_request = scapy.ARP(pdst = ip)
broadcast = scapy.Ether(dst = "ff:ff:ff:ff:ff:ff")
arp_request_broadcast = broadcast / arp_request
answered_list = scapy.srp(arp_request_broadcast, timeout = 1, verbose = False)[0]
clients_list = []
for eachelement in answered_list:
client_dict = {
"IP": eachelement[1].psrc,
"MAC": eachelement[1].hwsrc
}
clients_list.append(client_dict)
return clients_list
答案 0 :(得分:1)
您的代码似乎正确。
ARP结果变化很大。实际上,出于安全原因,某些设备(例如,大多数Apple设备)不会回复广播的请求或注册免费的ARP(仅在需要时回复它们)。并非所有设备都始终可以进行扫描,从而导致扫描结果不同。
您可以做什么: