動かざることバグの如し

近づきたいよ 君の理想に

Mac OSのMACアドレスを偽装する

一発で実行させたいシェルスクリプト

thr3a-m2:~ root# cat /var/root/change.sh
#!/bin/bash
status=1

while [ $status -ne 0 ]
do
  /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -z && sleep 1 && openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//' | xargs ifconfig en0 ether && networksetup -detectnewhardware

  status=$?

  if [ $status -ne 0 ]; then
      echo "retry"
  fi
done

echo "done"

無料WIFIとかはクッキーではなくMACアドレスで判別してるケースが多い

ってことでMac OSMACアドレスを変更するメモ(同じマックでややこしい)

変更前の状態を確認

理由はもちろん元に戻すため

$ ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 46:e2:05:70:81:1f
    nd6 options=1<PERFORMNUD>
    media: autoselect (<unknown type>)
    status: inactive

生成

ランダムなMACアドレスを生成 ベンダー番号が元のと合ってないとか言わないこと

$ openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
a6:e6:a5:ed:5d:1d

変更

生成したダミーのMACアドレスにすり替える

# /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z
# ifconfig en0 ether a6:e6:a5:ed:5d:1d
$ networksetup -detectnewhardware

確認

$ ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether a6:e6:a5:ed:5d:1d
    inet6 fe80::44e2:5ff:fe70:811f%en0 prefixlen 64 scopeid 0x4
    inet 10.4.10.171 netmask 0xfffe0000 broadcast 10.5.255.255
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active

1行でやりたい人向け

openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//' | xargs ifconfig en0 ether && networksetup -detectnewhardware

Monterey以降の場合

先に以下のコマンドを実行しておく

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -z

参考URL