Get BSSID (MAC address) of wireless access point from C#

Iain picture Iain · Oct 9, 2008 · Viewed 83.4k times · Source

How can I get the BSSID / MAC (Media Access Control) address of the wireless access point my system is connected to using C#?

Note that I'm interested in the BSSID of the WAP. This is different from the MAC address of the networking portion of the WAP.

Answer

Iain picture Iain · Oct 9, 2008

The following needs to be executed programmatically:

netsh wlan show networks mode=Bssid | findstr "BSSID"

The above shows the access point's wireless MAC addresses which is different from:

arp -a | findstr 192.168.1.254

This is because the access point has 2 MAC addresses. One for the wireless device and one for the networking device. I want the wireless MAC but get the networking MAC using arp.

Using the Managed Wifi API:

var wlanClient = new WlanClient();
foreach (WlanClient.WlanInterface wlanInterface in wlanClient.Interfaces)
{
    Wlan.WlanBssEntry[] wlanBssEntries = wlanInterface.GetNetworkBssList();
    foreach (Wlan.WlanBssEntry wlanBssEntry in wlanBssEntries)
    {
        byte[] macAddr = wlanBssEntry.dot11Bssid;
        var macAddrLen = (uint) macAddr.Length;
        var str = new string[(int) macAddrLen];
        for (int i = 0; i < macAddrLen; i++)
        {
            str[i] = macAddr[i].ToString("x2");
        }
        string mac = string.Join("", str);
        Console.WriteLine(mac);
    }
}