首页 > 解决方案 > Python从网络获取ips和macs

问题描述

我正在尝试从网络中获取所有 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

但这只会让我得到我输入的 Ip 的 MAC。

我想我必须使用:

answered, unanswered = srp(eth/arp)

并用子网的地址修改 pdst 但我不知道该怎么做。

有任何想法吗?

标签: pythonipscapy

解决方案


您只需输入您的网络作为pdst字段。你想使用 atimeout因为有些探针可能不会得到答案。例如:

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

推荐阅读