使用本地网络IP地址(192.168.xxx.xxx)获取设备的MAC地址

时间:2019-09-01 11:58:45

标签: windows python-2.7

我正在构建一个微型项目,遇到了这个问题。.我必须找到我的家庭网络中所有设备的MAC地址。在这里,我获得了所有设备的本地IP地址(从1 ping到255)并记下所有响应的设备IP)。在此,我将Windows与python 2.7.x配合使用。我也需要网卡制造商名称。 换句话说,我只想要WI-FI Watcher显示的原始数据。

我的目标是获得MAC和网卡制造商的名称

1 个答案:

答案 0 :(得分:0)

首先,请确保您对子网中的主机执行 all 操作。我会先对broadcast address进行ping操作,然后再以防万一,可能其中一些没有响应您的广播。

这样,您将填充计算机的本地ARP缓存。然后,您可以运行此可执行文件:

arp -a -v

这将输出有关所有IP地址及其对应的MAC地址的信息。

然后,只需查找MAC地址的OUI

在纯Python中,正如您在评论中提到的那样,您可以使用“ Scapy”。您可以在此处找到ARP ping示例:

https://freezion.com/2009/01/22/arp-ping-using-scapy/

基本上:

from scapy import srp,Ether,ARP,conf
conf.verb=0
ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=sys.argv[1]),
          timeout=2)

对于OUI查找,尽管它具有外部依赖性,但是您可以使用以下代码:

import requests

for addr in ['88:53:2E:67:07:BE', 'FC:FB:FB:01:FA:21',
    'D4:F4:6F:C9:EF:8D', '23:45:67']:
vendor = requests.get('http://api.macvendors.com/' + addr).text
print(addr, vendor)

此外,您可以尝试来自Wireshark的OUI parser lib

注意:如果在目标主机上禁用了ICMP,则此方法不起作用,在这种情况下,您必须运行传统的portcan并查找打开的端口。

相关问题