python - 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 但我不知道该怎么做。
有任何想法吗?
解决方案
您只需输入您的网络作为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()
推荐阅读
- python - 初学者编码聊天机器人
- java - Spring Boot MVC 应用程序中的无效会话(注销)
- typescript - Typescript 类型的对象,其键是具有一个通用参数的函数?
- c# - 在 .net core WebAPI 项目中,哪些事件会导致 http 请求被取消?
- ios - 如何将 UIView 更新为 tableviewcell 中的按钮被单击
- graphql - Gatsby 查询留在编译后的代码中
- flutter - Flutter - 如何使可重复使用的按钮更改其图像和颜色?
- swift - SwiftUI - 为什么 GeometryReader 会导致 .frame() 修饰符不起作用?
- python-3.x - 导航窗格中两个元素下具有相同名称和 xpath 的 Web 元素
- javascript - Word Add-in JS API:如何将内嵌图片调整为纸张大小?