使用Python搜索具有MAC地址的主机

使用Python搜索具有MAC地址的主机,python,network-programming,Python,Network Programming,我想在我的网络上搜索一个给定的MAC地址,所有这些都来自Python脚本。我已经有了网络中所有活动IP地址的映射,但我不知道如何收集MAC地址。有什么想法吗?我不认为有一种内置的方法可以从Python本身获得它 我的问题是,您如何从网络中获取IP信息 要从本地计算机获取它,您可以轻松地解析ifconfig(unix)或ipconfig(windows)。您需要。Python的标准库不包含任何这方面的代码,因此您要么需要调用外部程序(您的操作系统可能有一个“arp”实用程序),要么需要自己构建数据

我想在我的网络上搜索一个给定的MAC地址,所有这些都来自Python脚本。我已经有了网络中所有活动IP地址的映射,但我不知道如何收集MAC地址。有什么想法吗?

我不认为有一种内置的方法可以从Python本身获得它

我的问题是,您如何从网络中获取IP信息


要从本地计算机获取它,您可以轻松地解析ifconfig(unix)或ipconfig(windows)。

您需要。Python的标准库不包含任何这方面的代码,因此您要么需要调用外部程序(您的操作系统可能有一个“arp”实用程序),要么需要自己构建数据包(可能使用类似的工具)。

取决于您的平台。如果您使用*nix,您可以使用“arp”命令查找给定IP的mac地址(假设为IPv4)地址。如果这不起作用,您可以ping地址,然后查看,或者如果您可以访问原始网络(使用BPF或其他机制),您可以发送自己的ARP数据包(但这可能有些过分)。

如果您想要纯Python解决方案,您可以查看如何制作数据包(您需要发送ARP请求,并检查回复)。或者,如果您不介意调用外部程序,您可以使用
ARP
(在Un*x系统上,我不知道有Windows等效程序)。

似乎没有一种本机方法可以使用Python来完成此操作。您最好的办法是在Windows上解析“ipconfig/all”的输出,或者Linux上的“IfCONFIG”。考虑使用OS.PONEN()和一些ReXEXP。

< P>你想解析“ARP”的输出,但是如果这些主机与Python脚本正在运行的主机通信,内核ARP缓存将只包含那些IP地址(E/P)。
ifconfig可用于显示本地接口的MAC地址,但不能显示局域网上的MAC地址。

Mark Pilgrim介绍了如何在Windows上为当前带有Netbios模块的机器执行此操作。您可以在python.org上获取Netbios模块作为Win32软件包的一部分。遗憾的是,目前我在模块。

由于python不打算处理特定于操作系统的问题(它应该被解释并跨平台),因此我将执行一个外部命令来执行此操作:

在unix中,命令是
ifconfig

如果将其作为管道执行,则会得到所需的结果:

import os
myPipe = os.popen2("/sbin/ifconfig","a")
print(myPipe[1].read())

Python有特定于操作系统的模块,所以我认为您的答案是误导性的。处理这个问题的pythonic方法是一个模块,它有一个独立于操作系统的接口,可以由特定于操作系统的插件进行子分类。“用Python发送手工制作的以太网帧(例如ARP)”,这似乎正是您想要的。