The flaw of this design is the uniqueness. The unchanged MAC address can be used to track you. Connected to Starbucks WiFi? OK, noticed. On the London Underground? Record that too.
If you have ever entered your real name on a WiFi verification page, you have associated yourself with this MAC address. Without carefully reading the licensing terms of service, you could assume that free WiFi at airports is profiting from the sale of so-called “customer analytics data” (your personal information). For sale to hotels, restaurants, and anyone who wants to get to know you.
I didn't want the information to be logged and sold to multiple companies, so I spent a few hours coming up with a solution.
Fortunately, a pseudo MAC address can be randomly generated without disconnecting the network.
I want to randomly generate my MAC address, but there are three requirements:
My first attempt was to use a tool called macchanger, but it failed. Because Network Manager will restore the default MAC address according to its own settings.
I learned that Network Manager 1.4.1 or above can automatically generate random MAC addresses. If you are using Ubuntu version 17.04, you can do this based on this configuration file. But this doesn't quite meet my three requirements (you have to be between the two options random and stable Choose one, but there is no option to keep it the same for one day)
Because I am using Ubuntu 16.04 and the network manager version is 1.2, I cannot directly use the new feature of the higher version. Maybe the network manager has some randomization method support, but I didn't succeed. So I wrote a script to achieve this.
Fortunately, Network Manager 1.2 allows emulation of MAC addresses. You can see the option ‘Edit Connection’ in the connected network.
Network Manager also supports hooking - any script located in /etc/NetworkManager/dispatcher.d/pre-up.d/ will be executed before the network connection is established.
I want to generate new random MAC address based on network ID and date. We can use the network manager's command line tool nmcli to display all available networks:
ifconfig > nmcli connection NAME UUID TYPE DEVICE Gladstone Guest 618545ca-d81a-11e7-a2a4-271245e11a45 802-11-wireless wlp1s0 DoESDinky 6e47c080-d81a-11e7-9921-87bc56777256 802-11-wireless -- PublicWiFi 79282c10-d81a-11e7-87cb-6341829c2a54 802-11-wireless -- virgintrainswifi 7d0c57de-d81a-11e7-9bae-5be89b161d22 802-11-wireless --
Because each network has a unique identifier (UUID), to implement my plan, I concatenated the UUID and date together, and then used MD5 to generate the hash value:
ifconfig # eg 618545ca-d81a-11e7-a2a4-271245e11a45-2017-12-03 > echo -n "${UUID}-$(date +%F)" | md5sum 53594de990e92f9b914a723208f22b3f -
The generated result can replace the last eight bytes of the MAC address.
It is worth noting that the first byte 02 means that this address is self-specified. In fact, the first three bytes of the real MAC address are determined by the manufacturer, for example b4:b6:76 represents Intel.
It is possible that some routers will reject the MAC address they specify, but I have not encountered this situation.
Every time you connect to a network, this script will use nmcli to specify a randomly generated pseudo MAC address.
Finally, I checked the output of ifconfig and I found that the MAC address HWaddr had become a randomly generated address (simulating Intel's) instead of my real MAC address.
> ifconfig wlp1s0 Link encap:Ethernet HWaddr b4:b6:76:45:64:4d inet addr:192.168.0.86 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::648c:aff2:9a9d:764/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12107812 errors:0 dropped:2 overruns:0 frame:0 TX packets:18332141 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11627977017 (11.6 GB) TX bytes:20700627733 (20.7 GB)
The complete script can also be viewed on Github.
Update: Use your own designated MAC address to avoid conflict with the real Intel address. Thanks @_fink
The above is the detailed content of How to Randomize Your WiFi MAC Address in Ubuntu 16.04. For more information, please follow other related articles on the PHP Chinese website!