在OS X Yosemite中更改MAC地址


34

我通常使用以下命令更改我的MAC地址:

# Get a New MAC Address
openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
# Changing the MAC Address
sudo ifconfig en0 ether d4:33:a3:ed:f2:12

当我进入:

ifconfig en0 |grep ether

我仍然得到旧的MAC地址:( - 谁可以提供帮助?我希望有一个脚本或系统在系统启动时自动更改它。


3
你试过SpoofMAC(pip install SpoofMAC)吗?这对我来说仍然适用于优胜美地。
L3viathan 2014年

Answers:


35

一个可能的问题是随机生成的MAC将在一半的时间内失败。MAC地址的第一个字节需要是偶数(例如,以0,2,4,6,8,A,C,E结尾)。

所以,例如,3b:92:22:cf:55:7e不起作用,因为'3b'是奇数。有关详细信息,请参阅Wikipedia的MAC地址文章(偶数=单播,奇数=多播)。

要避免此问题,您可以稍微编辑random-MAC sed命令以强制第二个半字节为0。

openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/./0/2; s/.$//'

将此与hrbrmstr的答案相结合对我有用:

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport --disassociate
sudo ifconfig en0 ether $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/./0/2; s/.$//')
networksetup -detectnewhardware

2
这种方法对我有用。这需要在答案列表上更高。
Feng Huo

让一点点变短的一件事是: sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z; sudo ifconfig en0 ether a0$(openssl rand -hex 5 | sed 's/\(..\)/:\1/g'); networksetup -detectnewhardware 它确实使它变得不那么随意。
Kevin Lyda

27

您需要在更改MAC地址之前取消关联设备。因为en0,它将是:

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z
sudo ifconfig en0 ether d4:33:a3:ed:f2:12
networksetup -detectnewhardware

我试过这个,它仍然不适合我。
Feng Huo 2015年

@FengHuo它为我工作,在10.11.2(虽然我使用了不同的MAC地址)
Mint

作品于10.11.6
PawełSzczur2016年

2
你让我们的家庭假期让父母更愉快。不得不将苹果电视带到登录屏幕后面的酒店网络并欺骗MAC地址工作了一个魅力:)
stevenhaddox

6

Ferros做了一个甜蜜的节点工具来做这个https://github.com/feross/spoof

他有一个Python版本以及https://github.com/feross/SpoofMAC


5
安装node.js做一些可以通过简单运行来完成的事情ifconfig似乎有点过分......
nohillside

2
有点不用说它是节点用户的解决方案。他还有一个Python(预装在Mac上)版本github.com/feross/SpoofMAC
Tyler Buchea 2015年

ifconfig不是跨平台的; “节点过度杀伤”适用于Windows,Linux和macOS。加上$ spoof reset相反,用2个字。
fregante

4

这个命令对我来说很好,我从这个答案中取出了随机脚本:来自MadHatter的https://serverfault.com/a/299564

sudo ifconfig en0 ether $(perl -e 'for ($i=0;$i<5;$i++){@m[$i]=int(rand(256));} printf "02:%X:%X:%X:%X:%X\n",@m;') && sudo ifconfig en0 down && sudo ifconfig en0 up

1

用这个

sudo ifconfig en0 lladdr d4:33:a3:ed:f2:12

请参阅ifconfig的手册页

男人ifconfig


0

以下是我对更改MAC地址的贡献:https//gist.github.com/vinyll/b511159cce2d25edafe78403749088ca

#/bin/sh

# Instructions:
# 1. Copy this script locally and run the following `chmod +x mac-address-spoofer.sh`
# 2. Later, run the following: `./mac-address.spoofer.sh` and see your MAC address changing.

echo "origin MAC address: " `sudo ifconfig en0 ether | grep ether`
sudo ifconfig en0 ether `openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'`
echo "new MAC address: " `sudo ifconfig en0 ether | grep ether`

-1

这有效!

脚步:

  1. 获取Apple TV的MAC地址并将其写下来。它位于网络设置中。

  2. 获取MacBook的MAC地址(Yosemite OS版本)。在终端窗口中键入“ifconfig”。它将在“En0”部分。

  3. 剪切/粘贴以下内容(将Apple与Apple TV MAC地址替换为X)进入终端窗口:

将MAC OSX更改为Apple TV MAC

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z

sudo ifconfig en0 ether XX:XX:XX:XX:XX:XX

networksetup -detectnewhardware

  1. 如果出现提示,请输入密码,如有必要,请重复步骤3 **

  2. 使用您的MAC(非Apple TV)重新连接酒店无线网络并接受服务条款。

  3. 将以下内容剪切/粘贴到终端窗口中(用您的MAC OSX MAC地址替换Y)

将MAC地址更改回原始状态

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z

sudo ifconfig en0 ether YY:YY:YY:YY:YY:YY

networksetup -detectnewhardware

  1. 使用Apple TV连接酒店无线网络。

1
这与问题中描述的问题有何关系?
nohillside

-1
sudo ifconfig en0 ether `openssl rand -hex 5|perl -nE '$s.=join":",/../g}{say"02:$s"'`&& sudo ifconfig en0 down && sudo ifconfig en0 up

我更聪明:)


是什么让你的答案变得更聪明?在这种情况下,智慧意味着什么?
Michael Ozeryansky
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.