Example #1
0
        //紀錄減輸入
        public static double Like(this Wlan.WlanBssEntry[] Obj, Wlan.WlanBssEntry[] Obj2)
        {
            Obj = (from t in Obj
                   where t.SSID.IndexOf("nkfust") > -1
                   select t).ToArray();
            Obj2 = (from t in Obj2
                    where t.SSID.IndexOf("nkfust") > -1
                    select t).ToArray();

            Wlan.WlanBssEntry[] Intersect = I(Obj, Obj2);
            Wlan.WlanBssEntry[] Union     = U(Obj, Obj2);
            Wlan.WlanBssEntry[] Lost      = E(Union, Intersect);

            ArrayList usedMac = new ArrayList();

            double result = 0;

            for (int i = 0; i < Intersect.Length; i++)
            {
                Wlan.WlanBssEntry A = (from t in Obj
                                       where  t.Equals(Intersect[i])
                                       select t).FirstOrDefault();
                Wlan.WlanBssEntry B = (from t in Obj2
                                       where  t.Equals(Intersect[i])
                                       select t).FirstOrDefault();

                result += Math.Pow(A.RSSI - B.RSSI, 2);
            }
            for (int i = 0; i < Lost.Length; i++)
            {
                result += Math.Pow(Lost[i].RSSI - (-100), 2);
            }
            return(Math.Sqrt(result));
        }
Example #2
0
        private void AddToList(Wlan.WlanAvailableNetwork network, Wlan.WlanBssEntry entry)
        {
            ListViewItem wifiItem = new ListViewItem(this.GetProfileName(network.dot11Ssid));

            // MAC Address
            wifiItem.SubItems.Add(this.GetMacAddress(entry.dot11Bssid));
            // Signal Quality
            wifiItem.SubItems.Add(string.Format("{0}%", network.wlanSignalQuality.ToString()));
            // dBm Value
            wifiItem.SubItems.Add(string.Format("{0}dBm", entry.rssi.ToString()));
            // Channel No
            wifiItem.SubItems.Add(this.GetChannel(entry).ToString());
            // Encryption
            wifiItem.SubItems.Add(network.dot11DefaultCipherAlgorithm.ToString());
            // Authentication
            wifiItem.SubItems.Add(network.dot11DefaultAuthAlgorithm.ToString());

            int range = ((int)network.wlanSignalQuality - 1) / 25;

            wifiItem.ImageIndex = range;

            if (network.dot11DefaultCipherAlgorithm.ToString().Equals("None"))
            {
                wifiItem.BackColor = Color.LimeGreen;
            }
            //запись в файл и добавление в лист на вторую форму
            // WriteToFile(this.GetProfileName(network.dot11Ssid) +"#"+ this.GetMacAddress(entry.dot11Bssid) + "#" + string.Format("{0}dBm", entry.rssi.ToString()));
            WifiInfo wi = new WifiInfo();

            wi.SSID  = this.GetProfileName(network.dot11Ssid);
            wi.BSSID = this.GetMacAddress(entry.dot11Bssid);
            wi.Level = entry.rssi.ToString();
            CurrentWifiList.Add(wi);
            listViewAccessPoints.Items.Add(wifiItem);
        }
Example #3
0
        private void NetworkList(Wlan.WlanAvailableNetwork[] networks, Wlan.WlanBssEntry[] wlanBssEntries)
        {
            foreach (Wlan.WlanAvailableNetwork network in networks)
            {
                Wlan.WlanBssEntry entry = (from bs in wlanBssEntries
                                           where GetProfileName(bs.dot11Ssid).Trim() == GetProfileName(network.dot11Ssid).Trim()
                                           select bs).FirstOrDefault <Wlan.WlanBssEntry>();

                AddToList(network, entry);
            }
        }
Example #4
0
        static string GetStringForBSSID(Wlan.WlanBssEntry BssEntry)
        {
            //return Encoding.ASCII.GetString(BssEntry.dot11Bssid, 0, (int)BssEntry.dot11Bssid.Length);
            StringBuilder sb = new StringBuilder();

            foreach (byte value in BssEntry.dot11Bssid)
            {
                sb.AppendFormat("{0:x2}" + ":", value);
            }
            return(sb.ToString().Substring(0, sb.ToString().Length - 1));
        }
Example #5
0
        private string MACToString(Wlan.WlanBssEntry entry)
        {
            var MACBuilder = new StringBuilder();

            foreach (var mByte in entry.dot11Bssid)
            {
                MACBuilder.Append(mByte.ToString("X"));
                MACBuilder.Append("-");
            }
            MACBuilder.Remove(MACBuilder.Length - 1, 1);
            return(MACBuilder.ToString());
        }
Example #6
0
        private string Dot11BSSTostring(Wlan.WlanBssEntry entry)
        {
            var bssIdBuilder = new StringBuilder();

            foreach (byte bssByte in entry.dot11Bssid)
            {
                bssIdBuilder.Append(bssByte.ToString("X"));
                bssIdBuilder.Append("-");
            }
            bssIdBuilder.Remove(bssIdBuilder.Length - 1, 1);
            return(bssIdBuilder.ToString());
        }
Example #7
0
        private string MACToString(Wlan.WlanBssEntry entry)
        {
            string mac = "";

            foreach (byte mByte in entry.dot11Bssid)
            {
                mac += mByte.ToString("X");
                mac += "-";
            }
            mac.Remove(mac.Length - 1, 1);
            return(mac);
        }
Example #8
0
            /// <summary>
            /// Converts a pointer to a BSS list (header + entries) to an array of BSS entries.
            /// </summary>
            /// <param name="bssListPtr">A pointer to a BSS list's header.</param>
            /// <returns>An array of BSS entries.</returns>
            private static Wlan.WlanBssEntry[] ConvertBssListPtr(IntPtr bssListPtr)
            {
                Wlan.WlanBssListHeader bssListHeader = (Wlan.WlanBssListHeader)Marshal.PtrToStructure(bssListPtr, typeof(Wlan.WlanBssListHeader));
                long bssListIt = bssListPtr.ToInt64() + Marshal.SizeOf(typeof(Wlan.WlanBssListHeader));

                Wlan.WlanBssEntry[] bssEntries = new Wlan.WlanBssEntry[bssListHeader.numberOfItems];
                for (int i = 0; i < bssListHeader.numberOfItems; ++i)
                {
                    bssEntries[i] = (Wlan.WlanBssEntry)Marshal.PtrToStructure(new IntPtr(bssListIt), typeof(Wlan.WlanBssEntry));
                    bssListIt    += Marshal.SizeOf(typeof(Wlan.WlanBssEntry));
                }
                return(bssEntries);
            }
Example #9
0
        private void AddToList(Wlan.WlanAvailableNetwork network, Wlan.WlanBssEntry entry)
        {
            foreach (ListViewItem lvi in listViewAccessPoints.Items)
            {
                if (lvi.SubItems[1].Text == GetMacAddress(entry.dot11Bssid))
                {
                    return;
                }
            }

            var wifiItem = new ListViewItem(GetProfileName(network.dot11Ssid));

            // MAC Address
            wifiItem.SubItems.Add(GetMacAddress(entry.dot11Bssid));

            // Signal Quality
            wifiItem.SubItems.Add(string.Format("{0}", network.wlanSignalQuality.ToString()));
            sbProgressBar.Value       = (int)network.wlanSignalQuality;
            sbProgressBar.ToolTipText = string.Format("{0}%", network.wlanSignalQuality.ToString());

            // Signal Strength
            wifiItem.SubItems.Add(string.Format("{0}", entry.rssi.ToString()));
            // // смена знака

            // Channel No
            wifiItem.SubItems.Add(GetChannel(entry).ToString());
            // Encryption
            wifiItem.SubItems.Add(network.dot11DefaultCipherAlgorithm.ToString());
            // Authentication
            wifiItem.SubItems.Add(network.dot11DefaultAuthAlgorithm.ToString());
            wifiItem.ImageIndex = ((int)network.wlanSignalQuality - 1) / 25;

            if (network.dot11DefaultCipherAlgorithm.ToString().Equals("None"))
            {
                wifiItem.BackColor = Color.LimeGreen;
            }

            listViewAccessPoints.Items.Add(wifiItem);

            if (currentMac.Equals(GetMacAddress(entry.dot11Bssid)))
            {
                labelSsid.Text         = GetProfileName(network.dot11Ssid);
                labelMac.Text          = GetMacAddress(entry.dot11Bssid);
                labelQuality.Text      = string.Format("{0}%", network.wlanSignalQuality.ToString());
                labelChannel.Text      = GetChannel(entry).ToString();
                cpbStrength.Value      = 100 - ((int)entry.rssi * -1);
                cpbStrength.LabelValue = entry.rssi.ToString();
            }
        }
Example #10
0
        public NetworkInfo(Wlan.WlanBssEntry wlanBssEntry)
        {
            Ssid = Encoding.UTF8.GetString(wlanBssEntry.dot11Ssid.SSID, 0, (int)wlanBssEntry.dot11Ssid.SSIDLength);
            var bssid = wlanBssEntry.dot11Bssid;

            Mac               = BssidToMac(bssid);
            Rssi              = wlanBssEntry.rssi;
            LinkQuality       = wlanBssEntry.linkQuality;
            ChCenterFrequency = wlanBssEntry.chCenterFrequency;
            uint channel;

            if (Metadata.ChannelsMap.TryGetValue(ChCenterFrequency / 1000, out channel))
            {
                Channel = channel;
            }
        }
Example #11
0
        private int GetChannel(Wlan.WlanBssEntry value)
        {
            int freq = (int)(value.chCenterFrequency / 1000);

            if (freq >= 2412 && freq <= 2484)
            {
                return((freq - 2412) / 5 + 1);
            }
            else if (freq >= 5170 && freq <= 5825)
            {
                return((freq - 5170) / 5 + 34);
            }
            else
            {
                return(-1);
            }
        }
Example #12
0
        /// <summary>
        /// converts the <c>WlanBssEntry</c> type into a readable MAC address
        /// </summary>
        /// <param name="bss">Wlan.WlanBssEntry</param>
        /// <returns>string</returns>
        public static string getBssid(Wlan.WlanBssEntry bss)
        {
            string bssid = "";

            for (int i = 0; i < bss.dot11Bssid.Length; i++)
            {
                if (i == bss.dot11Bssid.Length - 1)
                {
                    bssid += "" + hex[bss.dot11Bssid[i] / 16] + hex[bss.dot11Bssid[i] % 16] + "|";
                }
                else
                {
                    bssid += "" + hex[bss.dot11Bssid[i] / 16] + hex[bss.dot11Bssid[i] % 16] + ":";
                }
            }

            return(bssid);
        }
Example #13
0
        public async Task GetBssInfo_ValidDescription_ValidList()
        {
            var wlanInterface = Substitute.For <IWlanInterface>();

            wlanInterface.InterfaceName.Throws(new InvalidOperationException());
            var interfaceName = Guid.NewGuid().ToString();

            wlanInterface.InterfaceDescription.Returns(interfaceName);
            wlanInterface.InterfaceGuid.Throws(new InvalidOperationException());

            var sometext     = "sometext";
            var ssid         = Encoding.UTF8.GetBytes(sometext);
            var wlanBssEntry = new Wlan.WlanBssEntry
            {
                dot11Ssid = new Wlan.Dot11Ssid
                {
                    SSID       = ssid,
                    SSIDLength = (uint)ssid.Length
                },
                dot11Bssid        = new byte[] { 1, 2, 3, 4, 5, 6 },
                rssi              = 7,
                linkQuality       = 8,
                chCenterFrequency = 2422000
            };

            wlanInterface.GetNetworkBssList().Returns(new[] { wlanBssEntry });

            var wlanClient = Substitute.For <IWlanClient>();

            wlanClient.Interfaces.Returns(new[] { wlanInterface });
            var networkInfo   = new NetworksSource(wlanClient);
            var wifiInterface = await networkInfo.GetInterfaces().SingleAsync();

            var bssInfo = await networkInfo.ReadNetworks(wifiInterface).ToListAsync();

            Assert.Single(bssInfo, entity =>
                          entity.Ssid == sometext &&
                          entity.Mac == "01:02:03:04:05:06" &&
                          entity.Rssi == wlanBssEntry.rssi &&
                          entity.LinkQuality == wlanBssEntry.linkQuality &&
                          entity.ChCenterFrequency == wlanBssEntry.chCenterFrequency &&
                          entity.Channel == 3);
        }
Example #14
0
        private void NetworkList(Wlan.WlanAvailableNetwork[] networks, Wlan.WlanBssEntry[] wlanBssEntries)
        {
            int count = 0;

            IterCount++;
            IterationsCountLabel.Text = IterCount.ToString();
            //WriteToFile(IterCount.ToString());

            foreach (Wlan.WlanAvailableNetwork network in networks)
            {
                Application.DoEvents();

                Wlan.WlanBssEntry entry = (from bs in wlanBssEntries
                                           where GetProfileName(bs.dot11Ssid).Trim() == GetProfileName(network.dot11Ssid).Trim()
                                           select bs).FirstOrDefault <Wlan.WlanBssEntry>();

                ShowProgress((count += 1), networks.Length, Taskbar.TaskbarStates.Normal);
                this.AddToList(network, entry);

                Thread.Sleep(200);
            }
            ShowProgress(0, 0, Taskbar.TaskbarStates.NoProgress);
        }
Example #15
0
        public void GetWifiInfo()
        {
            using (var client = new WlanClient())
            {
                try
                {
                    StringBuilder sb = new StringBuilder();

                    WlanClient.WlanInterface wlanIface = client.Interfaces.FirstOrDefault();
                    wlanIface.Scan();

                    Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList();

                    int baseCount = wlanBssEntries.Length - 1;

                    Random rnd = new Random();

                    int rndSelectedBss = 0;

                    if (baseCount >= 0)
                    {
                        rndSelectedBss = rnd.Next(0, baseCount);

                        Wlan.WlanBssEntry network = wlanBssEntries[rndSelectedBss];

                        byte[] macAddr = network.dot11Bssid;

                        string tMac = "";

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


                        sb.Append("");

                        sb.AppendLine("Found network with SSID: " +
                                      System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString().Replace("\0", "")
                                      );

                        sb.AppendLine("Signal: " + network.linkQuality.ToString() + " percent.");

                        sb.AppendLine("BSS Type: " + network.dot11BssType.ToString());

                        sb.AppendLine("MAC: " + tMac.ToString());

                        sb.AppendLine("RSS: " + network.rssi.ToString());

                        sb.AppendLine("Random: " + SeedRandom(network.linkQuality, network.rssi));

                        sb.AppendLine();

                        textBox1.Text += sb.ToString();
                    }
                    else
                    {
                        GetWifiInfo(); // try again
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
 /// <summary>
 /// Converts a pointer to a BSS list (header + entries) to an array of BSS entries.
 /// </summary>
 /// <param name="bssListPtr">A pointer to a BSS list's header.</param>
 /// <returns>An array of BSS entries.</returns>
 private Wlan.WlanBssEntry[] ConvertBssListPtr(IntPtr bssListPtr)
 {
     Wlan.WlanBssListHeader bssListHeader = (Wlan.WlanBssListHeader)Marshal.PtrToStructure(bssListPtr, typeof(Wlan.WlanBssListHeader));
     long bssListIt = bssListPtr.ToInt64() + Marshal.SizeOf(typeof(Wlan.WlanBssListHeader));
     Wlan.WlanBssEntry[] bssEntries = new Wlan.WlanBssEntry[bssListHeader.numberOfItems];
     for (int i = 0; i < bssListHeader.numberOfItems; ++i)
     {
         bssEntries[i] = (Wlan.WlanBssEntry)Marshal.PtrToStructure(new IntPtr(bssListIt), typeof(Wlan.WlanBssEntry));
         bssListIt += Marshal.SizeOf(typeof(Wlan.WlanBssEntry));
     }
     return bssEntries;
 }