//紀錄減輸入 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)); }
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); }
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); } }
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)); }
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()); }
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()); }
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); }
/// <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); }
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(); } }
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; } }
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); } }
/// <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); }
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); }
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); }
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; }