2022年7月31日日曜日

Android 6.0 (Marshmallow) で MACアドレスを永続的に変更

GooglePlayにあるMACアドレス変更アプリ(Wifi Mac Changer など)では、変更できても一時的なものが多い。デバイスの再起動などでMACアドレスは再びデフォルト値に戻ります。

この状態でWiFiに繋げると、「認証に問題」というステータスになって接続できなかった。これはどうやら変更前のMacアドレスを参照したままWiFiの認証している様子。

WiFiの認証過程におけるHandshakeでは、MACアドレスから認証鍵を生成しているので、このままではWiFiに接続できる見込みがない。


Android Debug Bridge(adb) コマンドでやる場合は、
$ adb shell
$ su
# ifconfig wlan0 down
# ifconfig wlan0 hw ether 00:11:22:33:44:55
# ifconfig wlan0 up


結果の確認
$ ip link | tail
22: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 100
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

ただしこの変更も一時的なものです。


永続的に更新する場合は、以下
# echo -n "001122334455" > /persist/wifi/.macaddr

ただしこの後、この人みたいな状態になってしまった。
https://androidforums.com/threads/corrupted-wifi-mac-address.919147/
・再設定できない
・後半の3セットは再起動のたびに変動(00:11:22:XX:XX:XX)


これを解消するために試したのがこれ。
https://www.androidiani.com/forum/modding-google-nexus-4/344310-mac-address-cambiato-ad-ogni-riavvio-persistent-partition.html
# chown root:root /persist/wifi
# chmod 755 /persist/wifi
# chown wifi:wifi /persist/wifi/.macaddr
# chmod 660 /persist/wifi/.macaddr
# /system/bin/conn_init

これでMacアドレスを更新できるようになった。