There are a few things that should be taken into consideration when dealing with your problem.
First, the OUI
used by the netaddr 1.3.0
package is outdated.
I have an iPhone 16 with' OUI
0C-85-E1
. You can check directly in IEEE
or here that it is a valid OUI
, but it's not updated in the netaddr
source.
You can solve this problem using another approach to get OUI
info from the web.
maco = src_mac[:8].upper().replace(":", "-")
try:
response = requests.get(f"https://api.macvendors.com/{oui}")
if response.status_code == 200:
macf = response.text
else:
macf = "Not available"
except Exception as e:
macf = "Not available"
But here there's the second problem. Apple uses a private Wi-Fi addresses security functionality that prevents from showing the real OUI
on all requests, including probe requests.
Check here when this option is off:
And when it's on:
You can check that OUI
6E-BA-4F
it's invalid.
Android has a similar function too. So you will have the same problem.
If your clients use this function there is no way to determine the vendor based on OUI
from probe requests.