macOS 更换MAC地址

1,942 阅读3分钟

1. 在终端随机生成mac 地址

echo "78:2d:ad:$(openssl rand -hex 3 | sed 's/\(..\)/\1:/g; s/.$//')"

这段代码可以分成以下几个部分解释:

  • echo "78:2d:ad:$(...)"
    • 输出一个字符串,包含了固定的MAC地址前三段"78:2d:ad:",可在OUI获取,以及在括号中的命令执行结果,也就是生成的随机MAC地址的最后三段。
  • openssl rand -hex 3
    • 生成3个随机字节。
    • openssl rand 是 OpenSSL 的一个随机数生成工具,使用 -hex 选项生成十六进制格式的随机数。
  • sed 's/\(..\)/\1:/g; s/.$//'
    • 将前面命令生成的十六进制字符串中的字节两两分组,然后在每组之间添加一个冒号,最后去掉一个多余冒号。
    • sed 是一个用于文本处理的流编辑器,其中 s 是替换命令的首字母,g 表示替换所有匹配的文本。

因此,执行这段代码会生成一个符合要求的MAC地址,其中前三段是固定的"78:2d:ad",后三段是随机生成的。由于 OpenSSL 的随机数生成机制,每次执行都会生成不同的随机MAC地址。

2. 更换mac地址

sudo ifconfig en0 ether xx:xx:xx:xx:xx:xx

当您重新启动 Mac 计算机时,Mac 地址将恢复为默认值。因此,无论何时您需要或想要更改 macOS 中的 Mac 地址,您都可以在终端应用程序中键入上述命令之一,然后就可以开始了。

更改 Mac 地址后,您可能还需要重新启动 Wi-Fi 连接以避免网络问题。

关闭网络

sudo ifconfig en0 down

开启网络

sudo ifconfig en0 up

3. 一键更换mac地址

 echo "78:2d:ad:$(openssl rand -hex 3 | sed 's/\(..\)/\1:/g; s/.$//')" | xargs sudo ifconfig en0 ether    

4. 检查是否更新成功

ifconfig en0 | grep ether

5. 其他

  1. 打印所有硬件地址列表
networksetup -listallhardwareports

2. 为什么不直接生成6位的随机字节?

MAC地址是48位二进制数字,通常表示为12个十六进制数,每两个十六进制数之间用冒号或连字符隔开。合法的MAC地址规则如下:

  1. MAC地址由48位二进制数构成,每个二进制数位只能是0或1。
  2. MAC地址由12个十六进制数构成,每个十六进制数由0-9和A-F组成,不区分大小写。
  3. 十六进制数之间用冒号(:)或连字符(-)隔开,如00:11:22:33:44:55或00-11-22-33-44-55。
  4. MAC地址的第一位为最高有效位(MSB),第48位为最低有效位(LSB)。
  5. 一些MAC地址有特殊用途,如广播地址(FF:FF:FF:FF:FF:FF)和组播地址(01:00:5E:00:00:00到01:00:5E:7F:FF:FF)等,不应被分配给网络设备。

总之,合法的MAC地址必须符合上述规则,否则可能会导致网络设备无法正常通信。

  1. 电气和电子工程师协会 (IEEE) OUI

这个地址是一个文本文件,记录了IEEE(国际电气电子工程师协会)为各个厂商分配的唯一标识符(OUI)。OUI是一个24位的数字,通常以6位十六进制数的形式表示,前3个字节表示厂商标识符,后3个字节表示厂商内部设备的唯一标识符。 这个文本文件包含了所有已经分配的OUI,可以用于识别网络中的设备。在网络管理和安全领域,使用OUI可以帮助管理员识别网络中的设备,进行设备管理、安全审计、故障排除等操作。

  1. MAC Address

6. 快捷指令一键更换

可选电脑品牌

快捷指令一键更换