Zmień adres MAC w OS X Yosemite

34

Zwykle zmieniałem adres MAC za pomocą następujących poleceń:

# 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

Kiedy wejdę:

ifconfig en0 |grep ether

Nadal otrzymuję stary adres MAC :( - Kto może pomóc? Chciałbym mieć skrypt lub system, który automatycznie zmieniałby go przy starcie systemu.

Lupo
źródło
3
Czy próbowałeś SpoofMAC ( pip install SpoofMAC)? To nadal działa dla mnie na Yosemite.
L3viathan

Odpowiedzi:

35

Jednym z możliwych problemów jest to, że losowo generowane adresy MAC zawiodą o połowę. Pierwszy bajt adresu MAC musi być parzysty (np. Kończy się na 0, 2, 4, 6, 8, A, C, E).

Na przykład 3b: 92: 22: cf: 55: 7e nie działałoby, ponieważ „3b” jest nieparzysty. Szczegółowe informacje można znaleźć w artykule o adresie MAC Wikipedii (parzysty = unicast, nieparzysty = multicast).

Aby uniknąć tego problemu, możesz nieznacznie zmodyfikować polecenie losowego MAC sed, aby wymusić na drugim skręcie wartość 0.

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

Połączenie tego z odpowiedzią hrbrmstr działało dla mnie:

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
spokojny
źródło
2
Ta metoda działała dla mnie. To musi iść wyżej na liście odpowiedzi.
Feng Huo
Jedną rzeczą jest to, aby trochę go skrócić: sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z; sudo ifconfig en0 ether a0$(openssl rand -hex 5 | sed 's/\(..\)/:\1/g'); networksetup -detectnewhardware sprawia, że ​​jest nieco mniej losowy.
Kevin Lyda
27

Musisz oddzielić urządzenie przed zmianą adresu MAC. Dla en0, to będzie:

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z
sudo ifconfig en0 ether d4:33:a3:ed:f2:12
networksetup -detectnewhardware
hrbrmstr
źródło
Próbowałem tego i nadal nie działało to dla mnie.
Feng Huo
@FengHuo to zadziałało dla mnie, 10.11.2 (chociaż użyłem innego adresu MAC)
Mint
Działa 10.11.6
Paweł Szczur
2
Właśnie sprawiłeś, że nasze rodzinne wakacje były o wiele przyjemniejsze dla rodziców. Musiałem wprowadzić Apple TV do sieci hotelowej za ekranem logowania i fałszowanie adresu MAC działało
uroczo
6

Ferros stworzył słodkie narzędzie do węzła, aby zrobić tylko to https://github.com/feross/spoof

Ma także wersję Pythona https://github.com/feross/SpoofMAC

Tyler Buchea
źródło
5
Instalowanie node.js w celu zrobienia czegoś, co można zrobić po prostu przez bieganie, ifconfigwydaje się rodzajem przesady ...
nohillside
2
Jest rzeczą oczywistą, że jest to rozwiązanie dla użytkowników węzłów. Ma także wersję Python (która jest fabrycznie zainstalowana na komputerach Mac) github.com/feross/SpoofMAC
Tyler Buchea
ifconfignie jest wieloplatformowy; ta „przepełnienie węzła” działa w systemach Windows, Linux i macOS. Plus $ spoof resetrobi odwrotnie, w dwóch słowach.
fregante
4

To polecenie działa dla mnie dobrze, losowy skrypt wziąłem z tej odpowiedzi: https://serverfault.com/a/299564 od MadHatter.

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
Tukan3
źródło
1

Użyj tego

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

Zobacz stronę podręcznika ifconfig

man ifconfig

Clive819
źródło
0

Oto mój wkład w zmianę adresu 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`
winyl
źródło
-1

To działa!

Kroki:

  1. Uzyskaj adres MAC swojego Apple TV i zapisz go. Można go znaleźć w Ustawieniach sieciowych.

  2. Uzyskaj adres MAC swojego MacBooka (wersja systemu operacyjnego Yosemite). Wpisz „ifconfig” w oknie terminala. Będzie w sekcji „En0”.

  3. Wytnij / Wklej następujące elementy (zastępując litery X adresem MAC Apple TV) w oknie teminal:

zmień MAC OSX na 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. Wprowadź hasło, jeśli pojawi się monit, i powtórz krok 3, jeśli to konieczne **

  2. Połącz się ponownie z hotelową siecią bezprzewodową za pomocą swojego MAC (nie Apple TV) i zaakceptuj warunki usługi.

  3. Wytnij / wklej następujące elementy w oknie terminala (zamień litery Y na adres MAC OSX MAC)

zmień adres MAC z powrotem na oryginalny

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

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

Networksetup -detectnewhardware

  1. Połącz się z hotelowym bezprzewodowym urządzeniem Apple TV.
znak
źródło
1
Jak to się ma do problemu opisanego w pytaniu?
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

Mój jest o wiele mądrzejszy :)

Mantovani
źródło
Co sprawia, że ​​twoja odpowiedź jest mądrzejsza? Co w tym kontekście oznacza mądrzejszy?
Michael Ozeryansky