我试图从网络上获取所有IP及其相关的MAC地址。
直到现在,我有以下代码:
eth = Ether(dst = "ff:ff:ff:ff:ff:ff")
arp = ARP(pdst = '198.13.13.1')
answered = srp1(eth / arp)
print answered[1].hwsrc
print answered[1].psrc
但这只能让我得到我输入的MAC。
我想我必须使用:
answered, unanswered = srp(eth/arp)
使用子网地址修改pdst,但我不知道该怎么做。
有什么想法吗?
答案 0 :(得分:0)
您只需输入您的网络pdst
字段即可。您想使用timeout
,因为某些探测器可能无法得到答案。例如:
ans, unans = srp(Ether(dst=ETHER_BROADCAST) / ARP(pdst="198.13.13.0/24"), timeout=1)
然后你需要解析ans
。如果你想获得MAC&与IP地址关联后,您可以创建元组列表。例如:
res = [(pr.psrc, pr.hwsrc) for _, pr in ans]
print res
你也可以使用arping()
,这是一个专门的功能:
ans, unans = arping("198.13.13.0/24")
ans.show()