Simple trick

Like A Duck@programming.dev to Programmer Humor@programming.dev – 1349 points –
76

Let's pretend someone didn't know how to do that on an android. How would you explain it to them?

On android when you go to the wifi settings you're currently connected to there should be a setting for randomizing mac address per connection or per network. If you change it to per connection, once you disconnect and reconnect your mac address should change. On per network, it will randomly generate the mac address for the first connection and keep that address for that wifi forever.

Excellent explanation, thank you. Never knew what that difference was.

Thanks for asking the question! I've never needed to know it, and I've done enough android tinkering that I'm fairly sure I could find it quite easily if needed, but I enjoy my social media being peppered with bits of learning wherever possible. I'm a big fan of ambient curiosity

Yeah, recently I was on school wifi and it kept bothering me to log in and figured I needed to switch to per network or it would bother me everytime to sign into the captive portal.

I think per connection is a GrapheneOS thing unless I'm wrong

On stock (Pixel) Android, if you enable Developer Options, there is a setting under Networking called "Wi-Fi non-persistent MAC randomization" that randomizes the MAC per connection for networks that have randomization enabled.

Samsung's OneUI does this by default for all connections .

I don't have a Samsung, but I'm pretty sure that's still randomised per network, per connection can be enabled in the developer options somewhere.

I have a Samsung and it's per network, even if you forget and rejoin it keeps the same random Mac address. You need to enable a developer setting to have it randomize when you join.

Per connexion would be pretty bad. Per network.

Let's say you want to set a static DHCP ip from your router. The only way to do so (from the router, I'm not talking from the phone), is by assigning an IP to a MAC address.

If the address is randomised per connection, affecting a static DHCP ip would be impossible.

Another thing a router often has is some sort of dhcp memory. It remembers the ip it gave to a certain MAC address for some time, then when the device connects back, it assigns the same IP it had before.

So if the ip changes each time either the MAC address changes each time (not sure it's default), or the router has no memory.

for a device without inbound connectors and no ip based lan firewall rules, which applies to most phones, random per connection macs seem like a pretty good default for privacy.

some networks doing "unusual" things like hotel wifi limiting you to few devices (implemented by mac counting) may be thrown off though.

I’ve run samba servers from my phones in the past (android, at least) which was nice for a “portable file server” when out and about.

I didn't say there were no use cases for this, but the average phone user will not need it. someone using samba on their phone would likely be capable of switching the network config to not randomize every time.

That's the point though. The address is randomized per connection specifically so the device can't be identified. It's to prevent tracking, blocking, or assigning, anything based on mac address without the device owners knowledge. Every time your phone connects the network has to treat it like a new device. If it was randomized per network that would defeat the point.

I personally can't think of any reason you would need a static IP on your phone but if you did then you should know enough to know how to turn off the randomized mac address. You can even change the setting per network so if you need a static ip at home then you just set your phone to use a static mac address on your home network and continue using a randomized one on every other network.

Graphene just changed it to be enabled by default

But maybe they hat this feature earlier than AOSP

Yeah, on Android 12 I can only choose between "randomized MAC" and "phone MAC". Doesn't specify if it's randomized per network or connection, but I'd guess it's per network.

By default it's per network, but if you enable Developer Options, there is a setting under Networking called "Wi-Fi non-persistent MAC randomization" that randomizes the MAC per connection for networks that have randomization enabled. I am on Android 13 though, so I'm not sure if 12 has this option.

Hey, cool! It's here on Android 12 also! I take it as the network has to support randomization though, so it won't work in all networks?

Just google it you dumb piece of shit - Stack overflow user

Marked as duplicate

Thanks, I figured it out and got free food as a bonus!!!

Doesn't share solution

No worries, it's outlined in detail, with pictures and a video here: (deadlink)

Or more recently...

The top comment:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Redacted with PowerDeleteSuite. F*ck Spez.

All the replies: "OMG, thank you so much, this was exactly what I needed! You just saved me hours of work!"

I know you wanted this solution but that solution is shit here's my one instead

Most Android phones have an option to randomize MAC per WiFi, enabled by default. Maybe you can trigger a new MAC by forgetting the network and reconnecting?

If you enable Developer Options, there is a setting under Networking called "Wi-Fi non-persistent MAC randomization" that randomizes the MAC per connection for networks that have randomization enabled.

Would airport networks have randomization enabled?

There was a way to do it on older Android phones with a specific Mac address changer but it broke after android 6 got released.

fun fact, an early iPhone jailbreak would always change the phones wifi mac to the same address, so there was a meme for a while that if you had a jailbroken iPhone you couldn't use airport wifi

Why would anyone do that? If there's 2 jailbreak iphones on the same network then non of them would have internet access due to IP conflict?

This comes back to bite you when you purchase in-flight wifi which is tied to your MAC address. Make sure to disable that option for the in-flight access point!

on an AA flight I was recently on, they gave out free 20 mins of internet for watching a 15s ad, but this was once per device type of deal. In this case, turning on randomized mac addresses meant I get free inflight wifi for the entire flight!

Tragic airplane crash: Over 2700 suspected dead due to airplane data log

Why's it need to be temporary, anyway? It's an airport. Nobody's sticking around.

You haven’t “flown” recently, have you?

Why, did they add a week-long quarantine in baggage check? It's an airport. The whole point is to show up and leave. Even if the wait lasts longer than the flight.

If your ass in there longer than 24 hours, the wifi should be considered an apology.

It lasted 1 hour for me and if you've been to a busy airport you can be there for longer than that

Long time ago, it was probably due to overcrowding. Very easy to get shit quality of service once it hits a certain time of day.

But with advances in wireless technology (backhaul, 5Ghz, MIMO, …) I think that’s no longer the case.

Your airport wifi doesn't ask for your email, phone number, bank number of your life savings, etc?

No. Where are you that it asks you for info?

The bank number for life savings was a joke but for some reason they wanted me to verify (I didn't btw)

Oh I know that. Common verification joke people use.
I've never been asked for any information to use airport wifi, that's why I was wondering where they do ask.

Didn't know you could spoof a mac address

Most consumer-grade NICs have a default MAC address which is retrievable with device drivers, but delegate (Ethernet) packet assembly to the OS. If the OS asks the NIC to emit a packet, then the NIC often receives the packet as a blob, DMA'd from main memory, and emits the bytes as octets. Other NICs do manage packet assembly, but allow overwriting the default MAC address. By the time I was learning Linux, we had GNU MAC Changer available in userland with the macchanger command, and many distros have configuration for randomizing or hardcoding MAC addresses upon boot.

I want to say that this is all because olden corporate network management policies could require a technician to replace a NIC without changing the MAC address, but more likely it is because framing and packet assembly was not traditionally handed to a second controller, and was instead bit-banged or MMIO'd by the CPU.

Some devices, like Android, do this automatically. By default they have randomized mac enabled.

Where is this setting?

You likely have it enabled by default, it's located in the view more or advanced settings on each specific wifi network, once enabled just forget network and reconnect, if that doesn't work, you can try enabling "WiFi non-persistent MAC randomisation". I'm not techie but that's what I did whilst on a camp site with a 30 minute trial, worked a beaut.

Can't speak for other devices, but on my Samsung it's a network level setting in the "view more" section of the wifi network configuration.

GrapheneOS has per connection MAC which can be useful in situations like this

In general, I thought IP addresses are mutable while MACs stay the same, and I thought that's why the outside world uses IPs to identify networks while routers inside a network use MACs to identify specific devices. If you can change your MAC arbitrarily, doesn't that risk making the router's job more difficult? Why not just assign yourself a different internal IP?

I mean yeah, but in this case you want to make the routers job of shutting you out more difficult.

Changing your MAC will make older messages undeliverable, but that just means the connection will be momentarily interrupted until you establish new connections after re-connecting to the WiFi.

Why not just assign yourself a different internal IP? Because a. the router probably wants to assign you one itself via DHCP; and b. the router isn't looking at your IP address to lock you out; it's looking at your MAC address.

If your IP address is where in cyberspace you are, a MAC address is who you are. If you want to fool the bouncer, change your name, not your address.

I see! Thanks for the explanation! Didn't put two and two together to realize that the router basically reads MACs and writes IPs.

The router recognizes a device based on its MAC and assigns an IP address. Traditionally, the MAC stays the same, so you’re right. In this case, OP doesn’t want to be recognized by the (airport) router. There is software for spoofing the MAC address for most platforms. Changing the MAC address has recently become more popular due to privacy concerns and on some operating systems it’s supported out of the box.

I spoofed my MAC once when I went to a router page of a hotel and it said it was logging the request

I had them most sophisticated hotel/resort wifi capture page I've ever seen them other week. It had you register on the wifi using your room number and booking email, then it gave you 10 slots that you put Mac addresses into. I couldn't imagine how many people I bet never figured out how to use it lol

Are there airports that still do this? Every airport I've been to in the last decade has had free Wi-Fi.

I. >!!<**** ****I u

Uu U

Uu Uj