从MAC地址获取OUI供应商信息的命令行工具?


14

我发现一些工具似乎可以更新系统上的OUI MAC地址供应商数据库,例如get-ouiairodump-ng-oui-updateupdate-oui

update-oui(8)                          OUI                         update-oui(8)

NAME
       update-oui - download new version of the OUI and IAB lists

SYNOPSIS
       update-oui

DESCRIPTION
       update-oui  fetches  the  current  version  of the OUI and IAB lists from
       http://standards.ieee.org/regauth/oui/index.shtml and installs it, if the
       installed versions is older than 5 days.

       This utility requires curl, wget or libwww-perl to be installed.

OPTIONS
       -q     Be quiet. Do not output messages.

       -f     Force the update, even if the file is newer than 5 days.

FILES
       /usr/share/misc/
              Directory holding symbolic links to oui.txt and iab.txt

但是,如果我在网络上搜索IP:

luis@Zarzamoro:~$ sudo netdiscover -i eth1

 92 Captured ARP Req/Rep packets, from 12 hosts.   Total size: 5520
 _____________________________________________________________________________
   IP            At MAC Address      Count  Len   MAC Vendor
 -----------------------------------------------------------------------------
 192.168.4.31    bc:f1:f2:12:b4:93    60    3600   Unknown vendor
 192.168.4.24    f0:db:e2:de:11:80    02    120   Unknown vendor
 192.168.4.242   00:1d:7e:9c:6e:fc    05    300   Cisco-Linksys, LLC
 192.168.4.243   00:1c:10:64:63:ac    05    300   Cisco-Linksys, LLC
 192.168.4.244   00:1c:10:64:5f:94    05    300   Cisco-Linksys, LLC
 192.168.4.1     d8:61:94:e5:0b:1d    05    300   Unknown vendor
 192.168.4.246   00:1a:70:2f:ab:4b    04    240   Cisco-Linksys, LLC
 192.168.4.10    84:11:9e:2b:1c:d6    01    060   Unknown vendor
 192.168.4.11    ec:1f:72:5d:42:d0    02    120   Unknown vendor
 192.168.4.245   00:1a:70:2f:aa:63    01    060   Cisco-Linksys, LLC
 192.168.4.248   00:1a:70:2f:aa:d1    01    060   Cisco-Linksys, LLC
 192.168.4.251   44:d9:e7:0a:0b:98    01    060   Unknown vendor

只要有一些MAC报告为Unknown vendor,我想在任何OUI数据库中搜索其信息。

执行此搜索的正确命令行方式是什么? 也许像这样:

oui-info 44:d9:e7

注意:我知道可以使用Web浏览器在Google上搜索MAC的前三对,但是我想要一些命令行方法,因此可以编写脚本或通过远程登录(SSH)使用。

Answers:


2

尽管可以更优雅地编写它,但以下内容可在Linux发行版中正常运行,而无需依赖任何专用软件包。它解析IP命令的输出,将mac地址的供应商部分隔离到一个变量中,该变量最终通过供应商前缀的在线数据库进行grep处理

#!/bin/bash

OUI=$(ip addr list|grep -w 'link'|awk '{print $2}'|grep -P '^(?!00:00:00)'| grep -P '^(?!fe80)' | tr -d ':' | head -c 6)

curl -sS "http://standards-oui.ieee.org/oui.txt" | grep -i "$OUI" | cut -d')' -f2 | tr -d '\t'

借助一些创造力,您可以使其适应于通过ssh远程执行。我还看到了其他建议来识别dmidecode用于操作系统指纹的供应商详细信息,但是在测试时,该工具的结果却不一致。在Raspberry Pi上dmidecode完全失败。HTH-


在我拙见中,这是最好的答案,因为它无需使用(几乎)已安装的工具即可提供答案,并且,只要IEEE.Org保持更新(应该如此),它就必须是访问的最佳数据库。唯一的缺点是需要互联网。如今不是大问题。
Sopalajo de Arrierez,

有很多由个人/组织运行的OUI在线数据库。但是我选择了ieee.org,因为它消失或链接更改的风险较小。很高兴能为您提供帮助
F1Linux '19

14

我认为没有自动工具可以执行您所要求的操作,但是可以通过直接处理oui.txt文件来完成。

首先,它标识下载的文件,例如:

root@kalilloX:~# locate oui.txt
/var/lib/ieee-data/oui.txt

然后搜索您感兴趣的字符串。您必须删除:或插入-

root@kalilloX:~# grep -i "44d9e7" /var/lib/ieee-data/oui.txt
44D9E7     (base 16)        Ubiquiti Networks, Inc.

这是间接方法,但功能齐全,并且可能在任何* nix甚至某些嵌入式设备上都有效。谢谢。
Sopalajo de Arrierez 2015年

1
为了易于使用,您可以.bashrc按如下方式定义函数:oui() { grep -i "$1" /var/lib/ieee-data/oui.txt; }并按如下方式 使用它oui 44D9E7
-Aralox

4

与LilloX的答案类似,但使用的是nMap(如果已安装在系统中):

luis@balanceador:~$ locate nmap-mac-prefixes
/usr/share/nmap/nmap-mac-prefixes
luis@balanceador:~$ grep 0024A5 -i /usr/share/nmap/nmap-mac-prefixes
0024A5 Buffalo

可以与其他任何存储OUI信息的程序一起使用,例如airodump-ng-oui-updateoui.txt在这种情况下为归档)或其他几个程序:

  • /usr/share/btscanner/oui.txt
  • /usr/share/bluelog/oui.txt
  • /usr/share/ieee-data/oui.txt
  • /usr/share/golismero/thirdparty_libs/netaddr/eui/oui.txt
  • /usr/share/metasploit-framework/vendor/bundle/ruby/2.1.0/gems/packetfu-1.1.11/examples/oui.txt
  • /etc/unicornscan/oui.txt
  • /var/lib/ieee-data/oui.txt

1

您可以使用与此API类似的CURL发出请求来检索实际的供应商:

curl -XGET "https://api.macaddress.io/v1?apiKey=at_2d31hlNQAO1PXZVTecL6yoVAxI8IW&output=vendor&search=bc:f1:f2:12:b4:93"

要么

wget -qO- "https://api.macaddress.io/v1?apiKey=at_2d31hlNQAO1PXZVTecL6yoVAxI8IW&output=vendor&search=bc:f1:f2:12:b4:93"

对于列出的未知MAC地址,它返回以下结果:

bc:f1:f2:12:b4:93 -> Cisco Systems, Inc
f0:db:e2:de:11:80 -> Apple, Inc
d8:61:94:e5:0b:1d -> Objetivos y Sevicios de Valor Añadido
84:11:9e:2b:1c:d6 -> Samsung Electronics Co, Ltd
ec:1f:72:5d:42:d0 -> Samsung Electro-Mechanics(Thailand)
44:d9:e7:0a:0b:98 -> Ubiquiti Networks Inc

要使用该服务,您需要获取一个apiKey,如果您每天的请求数不足1000,则该APIKey是免费的。


确实是一种实用的方法。这似乎是一个提供MAC识别服务的网站(请参阅macaddress.io/pricing上的大量请求价格),并且就今天(2018年10月)而言,此答案中所述的API请求似乎是免费的。谢谢你,德米特里(Dmitri S.)
索帕拉霍·德·阿里雷兹

0

我写了一个脚本来更新oui和iab文件。主要问题是,nmap文件的形式与btscan或arpwatch等的形式不同,它们通常具有不同的形式(带有双点,带连字符,不带分隔符的MAC地址,大写,小写等) 。

您可以尝试使用此脚本,该脚本存储在https://github.com/burningfog/refresh_oui

请阅读自述文件,如果有任何问题,请给我每封邮件的提示。如果还有其他工具(不在github中命名),请给我oui文件的路径以及该文件中的一些行,以便我可以查看该表格。

问候燃烧雾


-1
cat `locate nmap-mac-prefixes` | grep -i ^YOUR_OID_START

-2
#!/bin/bash

arp -an | egrep -v incomplete | while read line ; do mac=$( echo $line | awk -F' ' '{print $4}' | sed 's/:/-/g' | tr "[:lower:]" "[:upper:]" | cut -c 1-8 ) ; vendor=$( egrep "$mac" /usr/share/hwdata/oui.txt ) ; echo "$line : $vendor" ; done

输出:

? (192.168.88.36) at 60:03:08:a8:4e:86 [ether]  on eth0 : 60-03-08   (hex)              Apple, Inc.
? (192.168.88.38) at d8:8f:76:6f:59:0a [ether]  on eth0 : D8-8F-76   (hex)              Apple, Inc.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.