static string MakeOpenProfile(string profileName, Wlan.WlanAvailableNetwork network) { string ssid = GetStringForSSID(network.dot11Ssid); string encryption = CipherToStringInProfile(network.dot11DefaultCipherAlgorithm); string profile = string.Format( @"<?xml version=""1.0"" encoding=""US-ASCII""?> <WLANProfile xmlns=""http://www.microsoft.com/networking/WLAN/profile/v1""> <name>{0}</name> <SSIDConfig> <SSID> <name>{1}</name> </SSID> </SSIDConfig> <connectionType>ESS</connectionType> <connectionMode>auto</connectionMode> <autoSwitch>false</autoSwitch> <MSM> <security> <authEncryption> <authentication>open</authentication> <encryption>{2}</encryption> <useOneX>false</useOneX> </authEncryption> </security> </MSM> </WLANProfile> ", profileName, ssid, encryption); return(profile); }
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); }
/// <summary> /// 一键连接wifi网络 /// </summary> /// <param name="network">加密网络</param> /// <param name="password">密码</param> public static void ConnetWifi(WlanClient.WlanInterface wlanIface, Wlan.WlanAvailableNetwork network, string password) { string profile = GetStringForSSID(network.dot11Ssid); if (password != null) { string hex = StringToHex(profile); string authentication = GetAuthentication(network.dot11DefaultAuthAlgorithm); string authEncryption = GetEncryption(network.dot11DefaultCipherAlgorithm); string keytype = GetKeyType(authEncryption); 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><connectionMode>auto</connectionMode><MSM><security><authEncryption><authentication>{2}</authentication><encryption>{3}</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>{4}</keyType><protected>false</protected><keyMaterial>{5}</keyMaterial></sharedKey></security></MSM></WLANProfile>", profile, hex, authentication, authEncryption, keytype, password); wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true); wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profile); } else { //有profile的加密连接,直接连 if (network.securityEnabled) { wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profile); } else { string hex = StringToHex(profile); 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><connectionMode>auto</connectionMode><MSM><security><authEncryption><authentication>open</authentication><encryption>none</encryption><useOneX>false</useOneX></authEncryption></security></MSM></WLANProfile>", profile, hex); wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true); wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profile); } } }
//连接 private void txButton1_Click(object sender, EventArgs e) { if (InternetGetConnectedState(out dwFlag, 0)) { ShowToast_InSetup("提示", "网络已连接,请勿重新连接", 2); return; } if (myListBox1.SelectedItems.Count == 0) { return; } if (myListBox1.SelectedIndex == -1) { return; } Wlan.WlanAvailableNetwork wn = NetWorkList[myListBox1.SelectedIndex]; if (wn.securityEnabled && !WlanHelper.HasProfile(WlanIface, WlanHelper.GetStringForSSID(wn.dot11Ssid))) { Form_Password fp = new Form_Password(); if (fp.ShowDialog() == DialogResult.OK) { string pw = fp.Password; WlanHelper.ConnetWifi(WlanIface, wn, pw); fp.Dispose(); } } else { WlanHelper.ConnetWifi(WlanIface, wn); } }
static void SelectCurrentWifi(Wlan.WlanAvailableNetwork network, WlanClient.WlanInterface wlanIface) { string name = GetStringForSSID(network.dot11Ssid); string xml = ""; foreach (Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles()) { if (profileInfo.profileName == name) // this is typically the network's SSID { xml = wlanIface.GetProfileXml(name); } else { if (network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.None) { SelectWifiWithNoKey(name, ref wlanIface); } else { Console.WriteLine("没有WiFiProfile信息,请先创建登录信息"); } //Console.ReadKey(); } } }
public Network(Wlan.WlanAvailableNetwork network) { SSID = System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).Trim((char)0); ProfileName = network.profileName; SignalQuality = network.wlanSignalQuality; CipherAlgorithm = network.dot11DefaultCipherAlgorithm.ToString().Trim((char)0); SecurityEnabled = network.securityEnabled; }
public void SetNetwork(Wlan.WlanAvailableNetwork nw, bool isConnected) { label1.Text = Encoding.UTF8.GetString(nw.dot11Ssid.SSID); statusLabel.Text = isConnected ? "Connected" : nw.securityEnabled ? "Secured" : "Public"; button1.Text = isConnected ? "Disconnect" : "Connect"; IsConnected = isConnected; network = nw; }
/// <summary> /// This method is called when the timer.Elapsed event is raised and checks if the network with the strongest signal has changed since the last check. /// </summary> protected override void timer_Elapsed(object sender, ElapsedEventArgs e) { timer.Stop(); try { bool found = false; foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { newMaximumQualityValue = 0; foreach (Wlan.WlanAvailableNetwork network in wlanIface.GetAvailableNetworkList(0)) { if (GetStringForSSID(network.dot11Ssid).Equals(GetStringForSSID(strongestNetwork.dot11Ssid))) { found = true; signalQualityStrongestNetwork = network.wlanSignalQuality; } else { if (!GetStringForSSID(network.dot11Ssid).Equals(GetStringForSSID(strongestNetwork.dot11Ssid)) && newMaximumQualityValue < network.wlanSignalQuality) { newMaximumQualityValue = network.wlanSignalQuality; newerStrongestNetwork = network; } } } if (found == false) { signalQualityStrongestNetwork = 0; // The network is no longer available. } } if (newMaximumQualityValue > signalQualityStrongestNetwork) { signalQualityStrongestNetwork = newMaximumQualityValue; strongestNetwork = newerStrongestNetwork; Trigger(); } } catch (Win32Exception ex) { ErrorLog.AddError(ErrorType.Failure, Strings.WiFi_CantGetNetworks); Logger.WriteLine(ex.Message); } catch (Exception ex) { ErrorLog.AddError(ErrorType.Failure, Strings.WiFi_CantGetNetworks); Logger.Write(ex); } timer.Start(); }
public void SetAvailability(Wlan.WlanAvailableNetwork availability) { available = true; var a = availability; SSID = SSID ?? a.dot11Ssid.ToStringBeauty(); Strength = a.wlanSignalQuality; Security = a.dot11DefaultAuthAlgorithm.ToString(); Encryption = a.dot11DefaultCipherAlgorithm.ToString(); connected |= (a.flags & Wlan.WlanAvailableNetworkFlags.Connected) > 0; }
/// <summary> /// Converts a pointer to a available networks list (header + entries) to an array of available network entries. /// </summary> /// <param name="availNetListPtr">A pointer to an available networks list's header.</param> /// <returns>An array of available network entries.</returns> private static Wlan.WlanAvailableNetwork[] ConvertAvailableNetworkListPtr(IntPtr availNetListPtr) { Wlan.WlanAvailableNetworkListHeader availNetListHeader = (Wlan.WlanAvailableNetworkListHeader)Marshal.PtrToStructure(availNetListPtr, typeof(Wlan.WlanAvailableNetworkListHeader)); long availNetListIt = availNetListPtr.ToInt64() + Marshal.SizeOf(typeof(Wlan.WlanAvailableNetworkListHeader)); Wlan.WlanAvailableNetwork[] availNets = new Wlan.WlanAvailableNetwork[availNetListHeader.numberOfItems]; for (int i = 0; i < availNetListHeader.numberOfItems; ++i) { availNets[i] = (Wlan.WlanAvailableNetwork)Marshal.PtrToStructure(new IntPtr(availNetListIt), typeof(Wlan.WlanAvailableNetwork)); availNetListIt += Marshal.SizeOf(typeof(Wlan.WlanAvailableNetwork)); } return(availNets); }
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(); } }
private Wlan.WlanAvailableNetwork devuelve_red(Wlan.Dot11Ssid X, Wlan.WlanAvailableNetwork[] lista) { Wlan.WlanAvailableNetwork ret = new Wlan.WlanAvailableNetwork(); int long2 = lista.GetLength(0); for (int i = 0; i < long2; i++) { if (X.Equals(lista[i].dot11Ssid)) { ret = lista[i]; break; } } return(ret); }
public static string MakeProfile(string profileName, Wlan.WlanAvailableNetwork network, string key) { switch (network.dot11DefaultAuthAlgorithm) { case Wlan.Dot11AuthAlgorithm.WPA_PSK: return(MakeWpaPskProfile(profileName, network, key)); case Wlan.Dot11AuthAlgorithm.RSNA_PSK: return(MakeWpa2PskProfile(profileName, network, key)); case Wlan.Dot11AuthAlgorithm.IEEE80211_Open: return(MakeOpenProfile(profileName, network)); default: throw new Exception("unsupported auth algorithm: " + network.dot11DefaultAuthAlgorithm); } }
private void btnBind_Click(object sender, EventArgs e) { btnBind.Text = "Binding Drone..."; btnBind.Enabled = false; lock (sync) { networkRouter = (Wlan.WlanAvailableNetwork)lstRouter.SelectedItem; networkDrone = (Wlan.WlanAvailableNetwork)lstDrone.SelectedItem; } //ConnectToDrone(); Thread t1 = new Thread(ConnectToDrone); t1.Start(); }
private void btnDroneProxy_Click(object sender, EventArgs e) { lock (sync) { try { networkRouter = (Wlan.WlanAvailableNetwork)lstRouter.SelectedItem; networkDrone = (Wlan.WlanAvailableNetwork)lstDrone.SelectedItem; } catch (Exception ex) { Status("No network selected. Please scan for networks."); } } Thread t1 = new Thread(ConnectToRouter); t1.Start(); }
private IEnumerable <NetworkData> GetNetworkData() { List <NetworkData> list = new List <NetworkData>(); IEnumerable <Wlan.WlanBssEntryN> networkBssList = MyWlanInterface.GetNetworkBssList(); IEnumerable <Wlan.WlanAvailableNetwork> availableNetworkList = MyWlanInterface.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllManualHiddenProfiles); if ((networkBssList != null) && (availableNetworkList != null)) { Wlan.WlanAvailableNetwork foundNetwork = new Wlan.WlanAvailableNetwork(); foreach (Wlan.WlanBssEntryN entry in networkBssList) { string ssid = Encoding.ASCII.GetString(entry.BaseEntry.dot11Ssid.SSID, 0, (int)entry.BaseEntry.dot11Ssid.SSIDLength); if (FindNetwork(ssid, availableNetworkList, ref foundNetwork)) { NetworkData item = new NetworkData(entry.BaseEntry.dot11Bssid); Utilities.ConvertToMbs(entry.BaseEntry.wlanRateSet.Rates, item.Rates); if (entry.NSettings != null) { item.NSettings = new IeParser.TypeNSettings(entry.NSettings); //Add the extended 802.11N rates item.Rates.AddRange(item.NSettings.Rates.Where(f => !item.Rates.Contains(f))); item.Rates.Sort(); } item.IsTypeN = entry.BaseEntry.dot11BssPhyType == Wlan.Dot11PhyType.Ht; int num = Utilities.ComputeRssi(entry.BaseEntry.linkQuality); item.Rssi = (entry.BaseEntry.rssi > num) ? entry.BaseEntry.rssi : num; item.Ssid = ssid; item.Channel = Utilities.ConvertToChannel(entry.BaseEntry.chCenterFrequency); item.NetworkType = Utilities.ConvertToString(entry.BaseEntry.dot11BssType); item.Privacy = Utilities.CreatePrivacyString(foundNetwork.dot11DefaultAuthAlgorithm, foundNetwork.dot11DefaultCipherAlgorithm); item.SignalQuality = foundNetwork.wlanSignalQuality; list.Add(item); } } } return(list); }
protected override void OnEnabling(EnablingEventArgs e) { seconds = int.Parse(Strings.General_TimerInterval) / 1000; if (!InitializeTimerCreateClient()) { e.Cancel = true; return; } try { // Getting the network with the strongest signal. foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { foreach (Wlan.WlanAvailableNetwork network in wlanIface.GetAvailableNetworkList(0)) { if (signalQualityStrongestNetwork < network.wlanSignalQuality) { strongestNetwork = network; signalQualityStrongestNetwork = network.wlanSignalQuality; } } } timer.Start(); } catch (Win32Exception ex) { ErrorLog.AddError(ErrorType.Failure, Strings.WiFi_CantGetNetworks); Logger.Write(ex); e.Cancel = true; } catch (Exception ex) { ErrorLog.AddError(ErrorType.Failure, Strings.WiFi_CantGetNetworks); Logger.Write(ex); e.Cancel = true; } }
private void wifiList_MouseDoubleClick(object sender, MouseEventArgs e) { try { NData nd = nData[wifiList.SelectedIndex]; if (nd.isNetwork) { Wlan.WlanAvailableNetwork network = nd.Network; WlanClient.WlanInterface wlanIface = nd.wlanIface; //------------------------------------------------ } Console.WriteLine("--------->"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); Msg("ERROR", ex.ToString()); } }
private void button1_Click(object sender, EventArgs e) { Wlan.WlanAvailableNetwork wn = NetWorkList[listBox1.SelectedIndex]; if (wn.securityEnabled && !WlanHelper.HasProfile(WlanIface, WlanHelper.GetStringForSSID(wn.dot11Ssid))) { Form_Password fp = new Form_Password(); if (fp.ShowDialog() == DialogResult.OK) { string pw = fp.Password; WlanHelper.ConnetWifi(WlanIface, wn, pw); fp.Dispose(); } } else { WlanHelper.ConnetWifi(WlanIface, wn); } }
private void linkNetworkWifi() { if (NetWorkList.Count == 0) { return; } Wlan.WlanAvailableNetwork wn = NetWorkList[0]; // 标记 只取第一个 要预判连接giwifi的相关条件在此数组之中 if (wn.securityEnabled && !WlanHelper.HasProfile(WlanIface, WlanHelper.GetStringForSSID(wn.dot11Ssid))) { MessageBox.Show("Giwifi存在不支持验证的网络条件,连接将会终止", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { WlanHelper.ConnetWifi(WlanIface, wn); } // ohh //登录条件开始头 }
public DataSets.WlanInfo getWlanInfo() { infoWlan.WLANS.Clear(); lista_bss = INTERFAZ.GetNetworkBssList(); INTERFAZ.Scan(); lista_redes = INTERFAZ.GetAvailableNetworkList(0); Wlan.WlanAvailableNetwork WLAN = new Wlan.WlanAvailableNetwork(); foreach (Wlan.WlanBssEntry redBSS in lista_bss) { DataSets.WlanInfo.WLANSRow row = infoWlan.WLANS.NewWLANSRow(); WLAN = devuelve_red(redBSS.dot11Ssid, lista_redes); row.ESSID = Encoding.ASCII.GetString(redBSS.dot11Ssid.SSID, 0, (int)redBSS.dot11Ssid.SSIDLength); row.BSSID = Utils.ByteArrayToString(redBSS.dot11Bssid); row.Auth = WLAN.dot11DefaultAuthAlgorithm.ToString(); row.Cipher = WLAN.dot11DefaultCipherAlgorithm.ToString(); row.PowerDbm = redBSS.rssi; infoWlan.WLANS.AddWLANSRow(row); } return(infoWlan); }
void ConnectNetwork(string ssid, WlanClient.WlanInterface nic, Wlan.WlanAvailableNetwork network) { var log = ServiceRegistration.Get <ILogger>(); if (!string.IsNullOrEmpty(network.profileName)) { try { log.Info("WifiConfiguration: Using existing Profile to connect to WLAN '{0}'", ssid); bool success = nic.ConnectSynchronously(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, network.profileName, CONNECTION_TIMEOUT_SECONDS); if (success) { FindNetworks(); } else { log.Warn("Connection to WLAN '{0}' failed.", ssid); } } catch (Exception ex) { log.Warn("Connection to WLAN '{0}' failed: {1}", ex, ssid, ex.Message); } } else { if (network.securityEnabled) { ServiceRegistration.Get <IScreenManager>().ShowDialog("dialogWifiPassword"); } else { log.Info("WifiConfiguration: Connecting to unsecured WLAN '{0}'", ssid); nic.Connect(Wlan.WlanConnectionMode.Auto, Wlan.Dot11BssType.Any, network.dot11Ssid, 0); } } }
/// <summary> /// 获取wifi信息提示 /// </summary> /// <param name="network"></param> /// <returns></returns> public static string GetWifiToolTip(Wlan.WlanAvailableNetwork network) { string result = string.Format("SSID:{0}\n信号强度:{1}\n安全类型:{2}", GetStringForSSID(network.dot11Ssid), network.wlanSignalQuality, GetAuthentication(network.dot11DefaultAuthAlgorithm)); return(result); }
private void Connect(WlanClient.WlanInterface wlanIface, Wlan.WlanAvailableNetwork ssid, string key) { bool result = false; string description = "初始化错误"; try { String auth = string.Empty; String cipher = string.Empty; bool isNoKey = false; String keytype = string.Empty; switch (ssid.dot11DefaultAuthAlgorithm) { case Wlan.Dot11AuthAlgorithm.IEEE80211_Open: auth = "open"; break; //case Wlan.Dot11AuthAlgorithm.IEEE80211_SharedKey: // 'not implemented yet; //break; case Wlan.Dot11AuthAlgorithm.RSNA: auth = "WPA2PSK"; break; case Wlan.Dot11AuthAlgorithm.RSNA_PSK: auth = "WPA2PSK"; break; case Wlan.Dot11AuthAlgorithm.WPA: auth = "WPAPSK"; break; case Wlan.Dot11AuthAlgorithm.WPA_None: auth = "WPAPSK"; break; case Wlan.Dot11AuthAlgorithm.WPA_PSK: auth = "WPAPSK"; break; } switch (ssid.dot11DefaultCipherAlgorithm) { case Wlan.Dot11CipherAlgorithm.CCMP: cipher = "AES"; keytype = "passPhrase"; break; case Wlan.Dot11CipherAlgorithm.TKIP: cipher = "TKIP"; keytype = "passPhrase"; break; case Wlan.Dot11CipherAlgorithm.None: cipher = "none"; keytype = ""; isNoKey = true; break; case Wlan.Dot11CipherAlgorithm.WEP: cipher = "WEP"; keytype = "networkKey"; break; case Wlan.Dot11CipherAlgorithm.WEP40: cipher = "WEP"; keytype = "networkKey"; break; case Wlan.Dot11CipherAlgorithm.WEP104: cipher = "WEP"; keytype = "networkKey"; break; } if (isNoKey && !string.IsNullOrEmpty(key)) { description = "无法连接网络 SSID:" + ssid.profileName + "\r\n" + "Dot11AuthAlgorithm:" + ssid.dot11DefaultAuthAlgorithm + "\r\n" + "Dot11CipherAlgorithm:" + ssid.dot11DefaultAuthAlgorithm.ToString(); return; } else if (!isNoKey && string.IsNullOrEmpty(key)) { description = "无法连接网络 SSID:" + ssid.profileName + "\r\n" + "Dot11AuthAlgorithm:" + ssid.dot11DefaultAuthAlgorithm + "\r\n" + "Dot11CipherAlgorithm:" + ssid.dot11DefaultAuthAlgorithm.ToString(); return; } else { string profileName = ssid.profileName; // this is also the SSID string mac = StringToHex(profileName); string profileXml = string.Empty; if (!string.IsNullOrEmpty(key)) { 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><connectionMode>auto</connectionMode><autoSwitch>false</autoSwitch><MSM><security><authEncryption><authentication>{2}</authentication><encryption>{3}</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>{4}</keyType><protected>false</protected><keyMaterial>{5}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, auth, cipher, keytype, key); } else { 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><connectionMode>auto</connectionMode><autoSwitch>false</autoSwitch><MSM><security><authEncryption><authentication>{2}</authentication><encryption>{3}</encryption><useOneX>false</useOneX></authEncryption></security></MSM></WLANProfile>", profileName, mac, auth, cipher, keytype); } wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true); //ssid.wlanInterface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, ssid.profileNames); wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName); } } catch (Exception e) { description = "无法连接网络 SSID:" + ssid.profileName + "\r\n" + "Dot11AuthAlgorithm:" + ssid.dot11DefaultAuthAlgorithm + "\r\n" + "Dot11CipherAlgorithm:" + ssid.dot11DefaultAuthAlgorithm.ToString() + "\r\n" + e.Message; return; } }
public void OpenManager(Wlan.WlanAvailableNetwork network) { UpdateProfiles(); if (network.profileName.Length == 0) { is_new = true; ControlBox = false; btn_delete.Text = "Cancelar"; cb_select_profile.Enabled = false; string ssid = Encoding.Default.GetString(network.dot11Ssid.SSID); tb_prof_name.Text = ssid; tb_ssid.Text = ssid; tb_ssid.Enabled = false; switch (network.dot11BssType) { case Wlan.Dot11BssType.Independent: cb_type.SelectedIndex = 0; break; case Wlan.Dot11BssType.Infrastructure: cb_type.SelectedIndex = 1; break; } cb_type.Enabled = false; switch (network.dot11DefaultAuthAlgorithm) { case Wlan.Dot11AuthAlgorithm.IEEE80211_Open: cb_auth.SelectedIndex = 0; break; case Wlan.Dot11AuthAlgorithm.IEEE80211_SharedKey: cb_auth.SelectedIndex = 1; break; case Wlan.Dot11AuthAlgorithm.WPA: cb_auth.SelectedIndex = 2; break; case Wlan.Dot11AuthAlgorithm.WPA_PSK: cb_auth.SelectedIndex = 3; break; case Wlan.Dot11AuthAlgorithm.RSNA: cb_auth.SelectedIndex = 4; break; case Wlan.Dot11AuthAlgorithm.RSNA_PSK: cb_auth.SelectedIndex = 5; break; } cb_auth.Enabled = false; if (network.securityEnabled) { cb_encryption.SelectedIndex = 3; } cb_encryption.Enabled = false; if (cb_auth.SelectedIndex == 0) { cb_key_type.Enabled = false; tb_key.Enabled = false; cb_protected.Enabled = false; } tb_key.Text = ""; } else { for (int c = 0; c < profiles.Length; c++) { if (profiles[c] == network.profileName) { cb_select_profile.SelectedIndex = c; UpdateData(); break; } } } ShowDialog(); }
public IEnumerable <NetworkData> GetNetworkData() { List <NetworkData> list = new List <NetworkData>(); //If the interface is null, return nothing if (_interface == null) { return(list); } IEnumerable <Wlan.WlanBssEntryN> networkBssList = null; IEnumerable <Wlan.WlanAvailableNetwork> availableNetworkList = null; try { networkBssList = _interface.GetNetworkBssList(); availableNetworkList = _interface.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllManualHiddenProfiles); } catch (NullReferenceException) { //Hopefully the call will succeed next time. } if ((networkBssList != null) && (availableNetworkList != null)) { //Get connected to AP Wlan.WlanAssociationAttributes connectedAP = new Wlan.WlanAssociationAttributes(); try { if (_interface.CurrentConnection.isState == Wlan.WlanInterfaceState.Connected) { connectedAP = _interface.CurrentConnection.wlanAssociationAttributes; } } catch (NullReferenceException) { /*Hopefully it will work next time*/ } Wlan.WlanAvailableNetwork foundNetwork = new Wlan.WlanAvailableNetwork(); foreach (Wlan.WlanBssEntryN entry in networkBssList) { string ssid = Encoding.ASCII.GetString(entry.BaseEntry.dot11Ssid.SSID, 0, (int)entry.BaseEntry.dot11Ssid.SSIDLength); if (FindNetwork(ssid, availableNetworkList, ref foundNetwork)) { NetworkData item = new NetworkData(entry.BaseEntry.dot11Bssid); item.IsTypeN = (entry.BaseEntry.dot11BssPhyType == Wlan.Dot11PhyType.Ht); if (item.IsTypeN && entry.IEs != null && entry.IEs.Length > 0) { item.NSettings = IeParser.Parse(entry.IEs); if (item.NSettings == null) { return(null); } //Add the extended 802.11N rates item.Rates.AddRange(item.NSettings.Rates.Where(f => !item.Rates.Contains(f))); item.Rates.Sort(); } Utilities.ConvertToMbs(entry.BaseEntry.wlanRateSet.Rates, item.Rates); item.IsTypeN = entry.BaseEntry.dot11BssPhyType == Wlan.Dot11PhyType.Ht; int num = Utilities.ComputeRssi(entry.BaseEntry.linkQuality); item.Rssi = (entry.BaseEntry.rssi > num) ? entry.BaseEntry.rssi : num; // tyler's fix // Sometimes there is an issue where the RSSI will become overly positive // (e.g. going from -96 to +160), so subtracting 256 will fix it. if (item.Rssi > 0) { item.Rssi -= 256; } item.Ssid = ssid; item.Channel = Utilities.ConvertToChannel(entry.BaseEntry.chCenterFrequency); item.NetworkType = Utilities.ConvertToString(entry.BaseEntry.dot11BssType); item.Security = Utilities.CreateSecurityString(foundNetwork.dot11DefaultAuthAlgorithm, foundNetwork.dot11DefaultCipherAlgorithm); item.SignalQuality = foundNetwork.wlanSignalQuality; //Check to see if this AP is the connected one item.Connected = item.MyMacAddress.CompareToPhysicalAddress(connectedAP.Dot11Bssid); list.Add(item); } } } return(list); }
private static bool FindNetwork(string ssid, IEnumerable <Wlan.WlanAvailableNetwork> networks, ref Wlan.WlanAvailableNetwork foundNetwork) { if (networks != null) { foreach (Wlan.WlanAvailableNetwork network in networks) { string str = Encoding.ASCII.GetString(network.dot11Ssid.SSID, 0, (int)network.dot11Ssid.SSIDLength); if (!string.IsNullOrEmpty(str) && str.Equals(ssid)) { foundNetwork = network; return(true); } } } return(false); }
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { Wlan.WlanAvailableNetwork wn = NetWorkList[listBox1.SelectedIndex]; toolTip1.SetToolTip(listBox1, WlanHelper.GetWifiToolTip(wn)); }
/// <summary> /// Converts a pointer to a available networks list (header + entries) to an array of available network entries. /// </summary> /// <param name="bssListPtr">A pointer to an available networks list's header.</param> /// <returns>An array of available network entries.</returns> private Wlan.WlanAvailableNetwork[] ConvertAvailableNetworkListPtr(IntPtr availNetListPtr) { Wlan.WlanAvailableNetworkListHeader availNetListHeader = (Wlan.WlanAvailableNetworkListHeader)Marshal.PtrToStructure(availNetListPtr, typeof(Wlan.WlanAvailableNetworkListHeader)); long availNetListIt = availNetListPtr.ToInt64() + Marshal.SizeOf(typeof(Wlan.WlanAvailableNetworkListHeader)); Wlan.WlanAvailableNetwork[] availNets = new Wlan.WlanAvailableNetwork[availNetListHeader.numberOfItems]; for (int i = 0; i < availNetListHeader.numberOfItems; ++i) { availNets[i] = (Wlan.WlanAvailableNetwork)Marshal.PtrToStructure(new IntPtr(availNetListIt), typeof(Wlan.WlanAvailableNetwork)); availNetListIt += Marshal.SizeOf(typeof(Wlan.WlanAvailableNetwork)); } return availNets; }
void ConnectNewSecureNetwork(string ssid, string key, WlanClient.WlanInterface nic, Wlan.WlanAvailableNetwork network) { var log = ServiceRegistration.Get <ILogger>(); log.Info("WifiConfiguration: Building new Profile to connect to WLAN '{0}'", ssid); string profileXml = Helper.GetProfileXml(ssid, key, network.dot11DefaultAuthAlgorithm, network.dot11DefaultCipherAlgorithm); if (profileXml != null) { string error = null; try { Wlan.WlanReasonCode reasonCode = nic.SetProfile(Wlan.WlanProfileFlags.User, profileXml, true); if (reasonCode != Wlan.WlanReasonCode.Success) { error = reasonCode.ToString(); } } catch (Exception ex) { error = ex.Message; } if (error == null) { nic.ConnectSynchronously(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, ssid, CONNECTION_TIMEOUT_SECONDS); } else { log.Warn("WifiConfiguration: Setting Profile for WLAN '{0}' failed: '{1}'", ssid, error); ServiceRegistration.Get <IDialogManager>().ShowDialog("[Dialogs.ErrorHeaderText]", error, DialogType.OkDialog, false, DialogButtonType.Ok); } } else { // don't know how to build profile log.Warn("WifiConfiguration: No known Mapping to create Profile '{0}' for AuthAlg: '{1}' and CipherAlg: '{2}'", ssid, network.dot11DefaultAuthAlgorithm, network.dot11DefaultCipherAlgorithm); ServiceRegistration.Get <IDialogManager>().ShowDialog("[Dialogs.ErrorHeaderText]", "Unable to build profile. Connect in Windows.", DialogType.OkDialog, false, DialogButtonType.Ok); } }
/// <summary> /// 一键连接wifi网络 /// </summary> /// <param name="network">公开网络</param> public static void ConnetWifi(WlanClient.WlanInterface wlanIface, Wlan.WlanAvailableNetwork network) { ConnetWifi(wlanIface, network, null); }