MAC 地址查询

识别 MAC 地址背后的厂商,在冒号、连字符与 Cisco 格式之间互转,并解读通用/本地位与组播位。全部在浏览器中完成。

查出 MAC 地址背后的厂商,并读懂这串地址本身透露的信息。 任意格式的地址都可以直接输入;也可以反过来输入公司名称,在注册表中反查。

支持冒号、连字符、点分和纯十六进制。厂商查询至少需要前三个字节。

MAC 地址到底编码了什么

六个字节,从中间一分为二

MAC 地址是 48 位,写作六个字节。前三个字节是组织唯一标识符(OUI),由 IEEE 出售给制造商;后三个字节由该制造商自行分配,保证它生产的每个网卡都不重复。厂商查询的全部依据就是这一划分:你识别的不是设备,而是"谁买下了这段号码"。

由此带来一个常被忽略的后果:查到的厂商是网络芯片的制造者,未必是机器外壳上的品牌。笔记本电脑经常报出无线网卡芯片厂商而不是整机品牌;虚拟机报出的则是虚拟化平台,因为地址由虚拟化层生成。

书写格式纯粹是外观差异。冒号分隔的字节对、连字符分隔的字节对、Cisco 的三组四位以及纯十六进制,描述的是同样的 48 位。只不过厂商和操作系统在展示方式上各行其是,所以格式互转才成了高频琐事。

改变含义的两个比特

第一个字节的次低位是"通用/本地"标志。该位为 0 表示地址来自 IEEE 分配的地址块,此时厂商查询才有意义;该位为 1 表示地址是本地选定的,任何注册表都不会收录它——查不到是预期结果,而不是数据缺失。

这一位正是现代手机和笔记本"查不到厂商"的原因。随机 MAC 地址如今已是 Wi-Fi 扫描的默认行为,连接时往往也启用,它会刻意置上本地位,就是为了无法被追溯到制造商、也无法跨网络关联。看到本地管理地址时,隐私随机化是最可能的解释。

第一个字节的最低位是"单播/组播"标志。为 0 表示该帧发往单个接口,为 1 表示发往一组接口;广播地址(48 位全为 1)只是其极端情形。如果你以为在看设备地址却发现组播位被置上,通常说明你看到的是协议地址而非硬件地址。

从 MAC 到 IPv6,以及它为何被弃用

页面上显示的"修改版 EUI-64",是过去用硬件地址构造 IPv6 地址的方法:在 MAC 中间插入 FF 和 FE 两个字节,并翻转通用/本地位,得到 64 位接口标识符,再接到网络前缀之后。

它能用,而且完全确定——而这恰恰是问题所在。这样生成的地址会把你的硬件身份带进你加入的每一个网络,让任何人都能跨地点关联你的流量。RFC 8981 的隐私扩展与 RFC 7217 的稳定但不透明标识符取代了这种做法,现代系统默认不再从 MAC 推导地址。

但这个转换仍然值得理解,因为它正是让 fe80:: 链路本地地址变得可读的关键。看到接口标识符中间出现 FF FE 模式,你就能一眼判断它派生自 MAC,并据此还原出原始硬件地址。

自研实现。厂商名称来自公开的 IEEE MA-L 注册表,以静态文件形式由浏览器下载一次;查询在本地完成,不会把地址发送到任何地方。

常见问题

为什么笔记本查出来是芯片厂商而不是我买的品牌?
OUI 属于网卡的制造者,而不是整机组装方。少数几家的无线芯片会出现在几十个品牌的机器里。
为什么手机的 MAC 地址查不到?
现代手机会为隐私随机化 Wi-Fi 地址。随机地址会置上本地管理位且从不注册,因此任何查询都无法解析。
几种书写格式有什么区别?
只有标点不同。冒号、连字符、Cisco 点分四位和纯十六进制编码的都是同样的 48 位,只是各厂商选择了不同的惯例。
地址上的组播位意味着什么?
它表示该帧发往一组接口而非单个接口。如果你以为在看设备地址却发现组播位,多半看到的是协议地址或广播地址。
能通过 MAC 地址定位到具体设备吗?
不能。地址只能说明哪家厂商拥有该号段,无法得知型号、机主或位置;由于随机化,它甚至可能并不长期稳定。
查询时我的 MAC 地址会被发送出去吗?
不会。注册表文件只下载到浏览器一次,之后所有查询都在本地进行,你输入的地址不会被传输。