Python从网络获取ips和mac

时间:2018-05-15 15:05:26

标签: python ip scapy

我试图从网络上获取所有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,但我不知道该怎么做。

有什么想法吗?

1 个答案:

答案 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()