1. MAC地址
	1.1 MAC的唯一性
	1.2 MAC地址格式
2. MAC与IP
	2.1 二层MAC地址解析
	2.2 查看本机多播相关信息的命令
3. 追踪
4. 生成MAC

1. MAC地址

MAC地址(英语:Media Access Control Address),直译为媒体访问控制地址,它是一个用来确认网络设备位置的地址。也称为: 
  • MAC地址(Medium Access Control Address)
  • 局域网地址(LAN Address)
  • 以太网地址(Ethernet Address)
  • 物理地址(Physical Address)
MAC 地址根据基于电气和电子工程师协会(IEEE)管理的扩展唯一标识符 (EUI) 的两个编号空间的原则形成:EUI-48(取代了过时的术语MAC-48)和EUI-64。
IEEE 为使用 EUI-48 空间的应用程序设定了 100 年的目标寿命(直到 2080 年),并相应地限制了应用程序的使用。
IEEE 鼓励非以太网应用程序采用更丰富的 EUI-64 地址空间。

1.1 MAC的唯一性

MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
但是,连接到两个不同网络的网络接口可以使用相同的 MAC 地址。
这种用法在大多数IEEE 802网络技术中很常见,包括以太网、Wi-Fi和蓝牙。
 
每个地址都可以存储在接口硬件中,例如其只读存储器,或由固件机制存储。
但是,许多网络接口支持更改其 MAC 地址。
该地址通常包括制造商的组织唯一标识符(OUI)。

1.2 MAC地址格式

MAC地址共48位(6个字节),以十六进制表示。用连字符、冒号分隔,或者不使用分隔符。
前24位由IEEE决定如何分配给每一家制造商且不重复, 后24位由实际生产该网络设备的厂商自行指定且不重复。
  • (第7bit) 第一个byte从最低有效比特数去第2个bit位. (通用与本地位)
    • (0) 表示: 广域地址 Universally administered
    • (1) 表示: 区域地址 Locally administered
  • (第8bit) 第一个byte的最低有效比特(LSB)位. (单播与多播位)
    • (0) 表示: 单播地址 Unicast (individual) 
    • (1) 表示: 多播地址 Multicast (group) 
组和本地管理地址的范围
U/L 和 I/G 位是独立处理的,并且存在所有四种可能性的实例。 
  U/L (广域) 通用管理
Universally administered
(区域) 本地管理
Locally administered
I/G  
单播(个人)
Unicast (individual)
* bit (xxxx xx00 ...)
X 0 -XX-XX-XX-XX-XX
X 4 -XX-XX-XX-XX-XX
X 8 -XX-XX-XX-XX-XX
X C -XX-XX-XX-XX-XX
* bit (xxxx xx10 …)
X 2 -XX-XX-XX-XX-XX
X 6 -XX-XX-XX-XX-XX
X A -XX-XX-XX-XX-XX
X E -XX-XX-XX-XX-XX
多播(组)
Multicast (group)
* bit (xxxx xx01 …)
X 1 -XX-XX-XX-XX-XX
X 5 -XX-XX-XX-XX-XX
X 9 -XX-XX-XX-XX-XX
X D -XX-XX-XX-XX-XX
* bit (xxxx xx11 …)
X 3 -XX-XX-XX-XX-XX
X 7 -XX-XX-XX-XX-XX
X B -XX-XX-XX-XX-XX
X F -XX-XX-XX-XX-XX
  • 广域 单播 bin (xxxx xx00 …后40bit...) Universally administered,  Unicast (individual) 
  • 广域 多播 bin (xxxx xx01 …后40bit...) Universally administered, Multicast (group) 
  • 区域 单播 bin (xxxx xx10 …后40bit...) Locally administered, Unicast (individual) 
  • 区域 多播 bin (xxxx xx11 …后40bit...) Locally administered, Multicast (group) 

2. MAC与IP

2.1 二层MAC地址解析

在OSI模型中,第三层网络层负责IP地址,第二层数据链接层则负责MAC地址。
IPv4 利用 ARP (地址解析协议) 缓存来维护IPv4地址与二层MAC地址的关系列表. 
IPv6 使用 NDP (邻居发现协议) 来互连本地设备, 并将它们连接到本地网络的互联网网关。
Windows下使用如下命令, 可以看到2种地址与MAC的对应关系列表. 
 > arp -a
 > netsh interface ipv6 show neighbors

2.2 查看本机多播相关信息的命令

Windows 查看本機加入多播群, 包含 的 ff 開頭的IPv6, 224 開頭的IPv4
 > netsh interface ipv6 show joins
 > netsh interface ipv4 show joins
 
Windows 查看邻居缓存, 包含IPv6 ff 與 3333; IPv4 224 與 01005e
 > netsh interface ipv6 show neighbors
 > netsh interface ipv4 show neighbors
 
Linux及MacOS 系统 显示 加入的多播设备群
 $ netstat -g
 $ ip -6 maddr show 
 
Linux 查看邻居缓存
 $ ip -6 neigh show 
MacOS 查看邻居缓存
 $ ndp -a 

3. 追踪

随机化
据爱德华·斯诺登称,美国国家安全局拥有一个通过监控 MAC 地址来追踪城市中移动设备移动的系统。
为了避免这种做法,苹果开始在iOS设备扫描网络时使用随机 MAC 地址。 其他供应商迅速效仿。
从 Android 6.0 版开始,Windows 10、和 Linux 3.18 都添加了扫描期间的 MAC 地址随机化功能。
MAC 地址随机化技术的实际实现在不同设备中差异很大。
此外,这些实现中的各种缺陷和缺点可能允许攻击者追踪设备,即使其 MAC 地址已更改,例如其探测请求的其他元素、或其时间安排。
如果不使用随机 MAC 地址,研究人员已经证实,可以将真实身份与特定的无线 MAC 地址联系起来。
 
匿名化
移动位置分析

4. 生成MAC

仍然有一些设备不支持MAC地址随机化,比如手上有一台路由器,移动宽带升级时送的,5G+2.5G双频,速度足够,可配置项却非常少。
支持IPv6,但获取IPv6地址时,生成后64位主机ID是基于路由器MAC地址的(多年前就被淘汰的方法)。 结果就是无论如何获取IPv6地址,后64位主机ID都是相同的。
好在设备支持手动修改MAC地址,但不会自动生成。
根据前面的MAC格式,可知MAC地址由前24位OUI+后24位组成。 我们只需要随机选择已知的OUI+随机的后24位即可生成MAC地址。
 
下载oui前缀文件,稍加整理,去除第二位(0,4,8,C)以外的地址。保留本地单播地址。
如下Excel表格,第一行是下方公式内容,最后3列是反查的来源信息
INDEX($oui.B:B,RANDBETWEEN(2,10000)) DEC2HEX(RANDBETWEEN(16,255)) - SUBSTITUTE(E2,$E$1,"" ) SUBSTITUTE(E2,$E$1,":" ) 优选 前缀来源 来源行
64-B0-E8 20 85 9D 64-B0-E8-20-85-9D 64B0E820859D 64:B0:E8:20:85:9D 589 Huawei Device Co., Ltd. 15495
5C-3C-27 66 E8 DE 5C-3C-27-66-E8-DE 5C3C2766E8DE 5C:3C:27:66:E8:DE 846 Samsung Electronics Co.,Ltd 28472
04-F0-EE 9C 21 3C 04-F0-EE-9C-21-3C 04F0EE9C213C 04:F0:EE:9C:21:3C 639 Intel Corporate 18581
64-BD-6D 57 C5 29 64-BD-6D-57-C5-29 64BD6D57C529 64:BD:6D:57:C5:29 1426 Apple, Inc. 2381
B0-DF-3A 6F AA A0 B0-DF-3A-6F-AA-A0 B0DF3A6FAAA0 B0:DF:3A:6F:AA:A0 846 Samsung Electronics Co.,Ltd 28754
10-93-E9 7C 48 C6 10-93-E9-7C-48-C6 1093E97C48C6 10:93:E9:7C:48:C6 1426 Apple, Inc. 1917
B8-F0-B9 F0 84 22 B8-F0-B9-F0-84-22 B8F0B9F08422 B8:F0:B9:F0:84:22 472 zte corporation 37938
  • 优选: 该数字表示该MAC地址所属企业包含的OUI数量。
  • 前缀来源: 该MAC地址的OUI所属的企业。
  • 来源行: 该MAC地址的OUI在来源表格的行号。