Home  >  Article  >  System Tutorial  >  How to Randomize Your WiFi MAC Address in Ubuntu 16.04

How to Randomize Your WiFi MAC Address in Ubuntu 16.04

王林
王林forward
2024-03-09 10:43:23547browse

Ubuntu 16.04 下随机化你的 WiFi MAC 地址的方法

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.

MAC address may not always be the same

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:

  1. MAC addresses are different in different networks. This means that my MAC address at Starbucks and on the London Underground network are not the same, making it impossible to tie my activity across different service providers.
  2. The MAC address needs to be changed frequently so no one on the network knows I'm the same person who passed here 75 times last year.
  3. The MAC address should remain unchanged throughout the day. When the MAC address changes, most networks will disconnect you and then have to go to a verification page to log in again - which is annoying.
OperationNetwork Manager

My first attempt was to use a tool called macchanger, but it failed. Because Network ManagerNetworkManager 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 randomrandom and stablestable 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.

Assign randomly generated pseudo MAC address

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)
script

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!

Statement:
This article is reproduced at:linuxprobe.com. If there is any infringement, please contact admin@php.cn delete