Beispiel #1
0
        private void btnScanAP_Click(object sender, EventArgs e)
        {
            //fix:  It should works even if wlaninterface doesn't connect to AP
            var client = new WlanClient();

            WlanClient.WlanInterface[] apCount = client.Interfaces;
            DataGridViewRowCollection  rows    = this.dataGridView1.Rows; //define DataGridViewRowCollection rows for adding new APs

            rows.Clear();                                                 //fix:  Clear() previous records of AP after press down button second time.


            //fix: 2 string concatenate to form a new one to perform DataGridViewCollection.add().
            foreach (WlanClient.WlanInterface APC in apCount)                            //loop all element returned by client.Interfaces with type WlanClient.WlanInterface
            {
                Wlan.WlanBssEntry[]         bssNetworks       = APC.GetNetworkBssList(); //exception occurs when WlanInterface doesn't connect to AP
                Wlan.WlanAvailableNetwork[] availableNetworks = APC.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllAdhocProfiles);

                foreach (Wlan.WlanBssEntry network in bssNetworks)
                {
                    int    rssi    = network.rssi;
                    byte[] macAddr = network.dot11Bssid;

                    string tMac = "";
                    for (int i = 0; i < macAddr.Length; i++)
                    {
                        tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper();
                    }

                    /*
                     * for (int i = 0; i < availableNetworks.Length; i++)
                     * {
                     *  string AuthMech = availableNetworks[i].dot11DefaultAuthAlgorithm.ToString();
                     *  string EncrypMech = availableNetworks[i].dot11DefaultCipherAlgorithm.ToString();
                     *  string[] MechString = { "", "", "", "", AuthMech, EncrypMech };
                     *  rows.Add(MechString);
                     *
                     * }
                     */
                    //string[] row1 = { "hpinc", "3168", "-50", "36", "2F" }; for test only
                    string[] APstring = { System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString(), network.rssi.ToString(), APC.Channel.ToString(), tMac, };
                    //DataGridViewRowCollection rows = this.dataGridView1.Rows;
                    rows.Add(APstring);


                    //APC.Scan();
                }
            }
        }