Подключиться к беспроводной сети в C # - PullRequest
5 голосов
/ 12 июня 2011

Я использую Managed WiFi API и пример кода:

string profileName = "Cheesecake"; // this is also the SSID
string mac = "52544131303235572D454137443638";
string key = "hello";
string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );

Я обновил код, чтобы использовать мой SSID и ключ, но я не знаю, как мне получить MAC-адрес.

Ответы [ 2 ]

3 голосов
/ 12 июня 2011

Класс PhysicalAddress должен помочь вам.В статье MSDN есть даже пример кода, который извлекает MAC-адрес из сетевых интерфейсов на машине.

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.physicaladdress.aspx

Надеюсь, это поможет.

0 голосов
/ 09 мая 2017

Существует отличный API SimpleWifi для C # и может использоваться как в:

string ssid = "abc wifi network";
            AccessPoint selectedAP = null;
            bool isApFound = false;

            foreach (AccessPoint ap in accessPoints)
            {
                if (ap.Name.Equals(ssid, StringComparison.InvariantCultureIgnoreCase))
                {
                    selectedAP = ap;
                    isApFound = true;
                    break;
                }                    
            }

            if(!isApFound)
            {

                MessageBox.Show("SSID: " + ssid + " not found in range.");
                return;

            }

            // Auth
            AuthRequest authRequest = new AuthRequest(selectedAP);
            bool overwrite = true;

            if (authRequest.IsPasswordRequired)
            {
                if (selectedAP.HasProfile)
                // If there already is a stored profile for the network, we can either use it or overwrite it with a new password.
                {
                    var confirmResult = MessageBox.Show("A network profile already exist, do you want to use it ?", "Confirm Yes ?", MessageBoxButtons.YesNo);
                    if (confirmResult == DialogResult.Yes)
                    {
                        overwrite = false;
                    }
                }

                if (overwrite)
                {
                    if (authRequest.IsUsernameRequired)
                    {

                        authRequest.Username = Microsoft.VisualBasic.Interaction.InputBox("Please enter Wifi username", "Wifi Username", "", -1, -1);

                    }

                    authRequest.Password = PasswordPrompt(selectedAP);

                    if (authRequest.IsDomainSupported)
                    {
                        authRequest.Domain = Microsoft.VisualBasic.Interaction.InputBox("Please enter Wifi domain", "Wifi Domain", "", -1, -1);
                    }
                }
            }

            selectedAP.ConnectAsync(authRequest, overwrite, OnConnectedComplete);
...