如何查看哪个制造商拥有 MAC 地址 range/prefix

How to see what manufacturer owns a MAC address range/prefix

我正在寻找一种方法来以编程方式获取在他们购买的 block/range 中拥有 MAC 地址的供应商的名称。最好通过查询一些 API 或数据库,语言不可知。或者如果应用程序有其他我不知道的方式。

例如,运行 nmap -sn 192.168.1.0/24 具有 root 权限会产生

...
Nmap scan report for 192.168.1.111
Host is up (0.35s latency).
MAC Address: B8:27:EB:96:E0:0E (Raspberry Pi Foundation)
...

... 这告诉我 Raspberry Pi 基金会“拥有”MAC 地址,在他们拥有的前缀范围内:B8:27:EB。 但是,我不确定 nmap 是如何知道这一点的,也不知道我自己是如何发现这一点的。解析 nmap 输出对我来说不是一个理想的解决方案。这是我从网上挖掘的结果:

如果像我设想的 public-面向 API 不存在,我会自己制作一个来取乐。我首先想知道我是否在考虑这个错误,以及是否有我没有找到的官方“规范”方式。如有任何帮助,我们将不胜感激,谢谢。

nmap 的维护者将前缀列表作为工具的一部分。你可以在这里看到它: https://github.com/nmap/nmap/blob/master/nmap-mac-prefixes

他们通过定期导入此站点上的 public 注册表来保持最新状态: https://regauth.standards.ieee.org/standards-ra-web/pub/view.html#registries

请注意,这些文件是有速率限制的,因此您应该将那些 csv 文件临时查询为软件包的一部分;相反,您应该做 nmap 所做的事情,并保留一个定期同步的内部列表。

我不知道有 public 可用的工具来查询它们作为 API;然而,创建一个与 nmap 相同的工作方式将是相当微不足道的。 nmap 每年不会更新该文件超过一次或两次,这让我怀疑该列表不会经常发生重大变化,以至于保留您自己的列表太繁重(您甚至可以经常下载 nmap 的列表)。