public string[] getSSID() { string[] wirelessInfo = new string[2]; wirelessInfo[0] = EMPTY; wirelessInfo[1] = EMPTY; try { WlanClient wlan = new WlanClient(); Collection <String> ConnectedSSIDs = new Collection <string>(); foreach (WlanClient.WlanInterface wlanInterface in wlan.Interfaces) { wirelessInfo[0] = wlanInterface.InterfaceDescription; Wlan.Dot11Ssid ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid; ConnectedSSIDs.Add(new String(Encoding.ASCII.GetChars(ssid.SSID, 0, (int)ssid.SSIDLength))); } wirelessInfo[1] = ConnectedSSIDs[0]; } catch (Exception ex) { wirelessInfo[1] = ExceptionHandling.getExceptionMessage(ex); } return(wirelessInfo); }
public bool GetMac() { WlanClient client = new WlanClient(); List <string> Listinterfacesmac = new List <string>(); foreach (WlanInterface wlanIface in client.Interfaces) { SimpleWifi.Win32.Interop.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); foreach (WlanBssEntry wlanBssEntry in wlanBssEntries) { byte[] macAddr = wlanBssEntry.dot11Bssid; var macAddrLen = (uint)macAddr.Length; var str = new string[(int)macAddrLen]; for (int i = 0; i < macAddrLen; i++) { str[i] = macAddr[i].ToString("x2"); } Listinterfacesmac.Add(string.Join("-", str)); } } List <string> test = Listinterfacesmac; bool ok_mac = Listinterfacesmac.Any(x => x == mac); return(ok_mac); }
private static void Main() { Console.WriteLine("Select 0 to disable WLAN autoconfig or 1 to enable it:"); int?option = null; while (!option.HasValue) { var command = Console.ReadLine(); if (int.TryParse(command, out var result)) { option = result; } else { Console.WriteLine("Invalid parameters, try again:"); } } var wlanClient = new WlanClient(); foreach (var client in wlanClient.Interfaces) { if (option == 0) { var cmdCommand = $@"/C netsh wlan set autoconfig enabled=no interface=""{client.InterfaceName}"""; Process.Start("CMD.exe", cmdCommand); } else if (option == 1) { var cmdCommand = $@"/C netsh wlan set autoconfig enabled=yes interface=""{client.InterfaceName}"""; Process.Start("CMD.exe", cmdCommand); } } }
private static void WifiDetection(WlanClient client) { foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); foreach (Wlan.WlanBssEntry network in wlanBssEntries) { int rss = 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(); } string SSID = Encoding.ASCII.GetString(network.dot11Ssid.SSID).ToString(); if (ssidtest == SSID) { if (Data.Length < 170) { Data += network.linkQuality; Data += ";"; Data += tMac; Data += ";"; } } } } //Console.WriteLine(Data); controller.SendData(Data); Data = ""; }
public static bool ConnectToAvailableWiLinkNetwork(out IPAddress address) { DateTime stop = DateTime.Now.AddSeconds(30); WlanClient client = new WlanClient(); while (stop.CompareTo(DateTime.Now) > 0) { foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { foreach (Wlan.WlanBssEntry network in wlanIface.GetNetworkBssList()) { List <byte> bytes = new List <byte>(); foreach (byte b in network.dot11Ssid.SSID) { if (b == 0) { break; } bytes.Add(b); } string ssid = Encoding.UTF8.GetString(bytes.ToArray()); if (ssid.StartsWith("WI_")) { address = ConnectToNetwork(ssid, ssid.Substring(ssid.IndexOf("_") + 1)); return(true); } } } RefereshNetwork(); Thread.Sleep(1000); } address = null; return(false); }
// Assume the SSID is first command line argument static void Main(string[] args) { WlanClient client = new WlanClient(); if (client.Interfaces.Length > 1) { Console.WriteLine("ERROR: More than one WiFi interface. Must specify which one! Implementation TODO"); Environment.Exit(0); } else if (client.Interfaces.Length == 0) { Console.WriteLine("ERROR: No WiFi interfaces found."); Environment.Exit(0); } WlanClient.WlanInterface wlanIface = client.Interfaces[0]; String openWifiSSID = args[0]; ConnectToOpenWifiNetwork(wlanIface, openWifiSSID); /* * ListAvailableNetworks(wlanIface); * ArrayList openSSIDs = GetAvailableOpenWifiNetworkSSIDs(wlanIface); * * // Connect to the first one * String openSSID_str = openSSIDs[0].ToString(); * ConnectToOpenWifiNetwork(wlanIface, openSSID_str); */ }
private void toolStripButton2_Click_1(object sender, EventArgs e) { while (wifi_dataGridView.Rows.Count > 0) { wifi_dataGridView.Rows.RemoveAt(0); } WlanClient client = new WlanClient(); try { foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); foreach (Wlan.WlanBssEntry network in wlanBssEntries) { int rss = 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(); } wifi_dataGridView.Rows.Add(false, System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString(), network.linkQuality + " %", network.dot11BssType, tMac, rss.ToString()); //MessageBox.Show(network.chCenterFrequency.ToString()); //MessageBox.Show(network.DOT); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } wifi_dataGridView.Columns[0].Width = 40; }
//开始扫描 private void button_scan_Click(object sender, EventArgs e) { //找到当前的wlan设备 client = new WlanClient(); if (client.Interfaces.Length == 0) { MessageBox.Show("未找到无线网卡!"); return; } //找到第一个wlan设备 wlanIface = client.Interfaces[0]; //开始扫描 timer_scan.Interval = 1000; timer_scan.Start(); //foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) //{ // Wlan.WlanBssEntry[] bssworks = wlanIface.GetNetworkBssList(); // foreach (Wlan.WlanBssEntry bsswork in bssworks) // { // str = SsidToString(bsswork.dot11Ssid); // Console.WriteLine(str); // Console.WriteLine(BitConverter.ToString(bsswork.dot11Bssid)); // Console.WriteLine(bsswork.rssi); // Console.WriteLine(); // } //} button_scan.Enabled = false; button_scan.Text = "扫描中..."; }
private void initializeAvailableWiFis() { try { WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanInterface in client.Interfaces) { try { string WlanName = ""; Wlan.Dot11Ssid ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid; WlanName = new string(Encoding.ASCII.GetChars(ssid.SSID, 0, (int)ssid.SSIDLength)); Snarl.SnarlConnector.ShowMessageEx("WiFi connected", "Connected to WiFi", WlanName + "\n" + wlanInterface.InterfaceDescription + "\n" + "Signal strenght: " + wlanInterface.CurrentConnection.wlanAssociationAttributes.wlanSignalQuality.ToString() + "%\nChannel " + wlanInterface.Channel.ToString(), 10, iconPath, SnarlMsgWndHandle, Snarl.WindowsMessage.WM_USER + 34, ""); Snarl.SnarlConnector.ShowMessageEx("WiFi connected signal strength", "Connected to " + WlanName, wlanInterface.CurrentConnection.wlanAssociationAttributes.wlanSignalQuality.ToString(), 10, iconPath, SnarlMsgWndHandle, Snarl.WindowsMessage.WM_USER + 34, ""); connectedWiFis.Add(WlanName); listOfConnectWiFis.Add(wlanInterface); } catch { } } } catch { } }
public Window1() { client = new WlanClient(); InitializeComponent(); this.snarlComWindow = new NativeWindowApplication.SnarlMsgWnd(); SnarlMsgWndHandle = snarlComWindow.Handle; executablePath = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\"; iconPath = executablePath + wirelessFull; this.snarlComWindow.pathToIcon = iconPath; SnarlConnector.RegisterConfig(SnarlMsgWndHandle, "WiFiSnarler", Snarl.WindowsMessage.WM_USER + 55, iconPath); SnarlConnector.RegisterAlert("WiFiSnarler", "WiFi connected"); SnarlConnector.RegisterAlert("WiFiSnarler", "WiFi connected signal strength"); SnarlConnector.RegisterAlert("WiFiSnarler", "WiFi disconnected"); //WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { //Add the event to track when the wireless connection changes wlanIface.WlanConnectionNotification += new WlanClient.WlanInterface.WlanConnectionNotificationEventHandler(wlanIface_WlanConnectionNotification); wlanIface.WlanNotification += new WlanClient.WlanInterface.WlanNotificationEventHandler(wlanIface_eventHandler); } // initializeAvailableWiFis(); // NetworkChange.NetworkAddressChanged += new System.Net.NetworkInformation.NetworkAddressChangedEventHandler(NetworkIPChanged); //WlanClient test = new WlanClient(); }
public List <WiFiNetwork> UpdateNetworks() { var wifiList = new List <WiFiNetwork>(); var client = new WlanClient(); foreach (var wlanIface in client.Interfaces) { var wlanBssEntries = wlanIface.GetAvailableNetworkList(0); var macIndex = 0; foreach (var network in wlanBssEntries) { var wifi = new WiFiNetwork(); wifi.Name = Encoding.ASCII.GetString(network.dot11Ssid.SSID); wifi.ConnectionQuality = network.wlanSignalQuality.ToString() + "%"; wifi.AuthenticationType = network.dot11DefaultAuthAlgorithm.ToString(); if (wifiList.Contains(wifi)) { continue; } try { wifi.MAC = wlanIface.GetNetworkBssList()[macIndex].dot11Bssid.Select(b => b.ToString("x2")).Aggregate((cur, next) => cur + ':' + next);//.Trim((char)0); } catch { break; } wifi.Connected = network.flags.HasFlag(Wlan.WlanAvailableNetworkFlags.Connected); wifiList.Add(wifi); macIndex++; } } return(Networks = wifiList); }
static void Main() { Application.EnableVisualStyles(); OpenMainWindow(); settings = new Settings(); wlan_client = new WlanClient(); wlan_intr = wlan_client.Interfaces[0]; wlan_intr.WlanNotification += WlanNotification; ContextMenuStrip menu = new System.Windows.Forms.ContextMenuStrip(); menu.Items.Add("Abrir control...", null, OpenWindow); menu.Items.Add("Salir", null, CloseProgram); icon = new NotifyIcon(); icon.Icon = window.Icon; icon.Text = "FlashAir Control se ejecuta en segundo plano."; icon.ContextMenuStrip = menu; icon.MouseDoubleClick += IconClick; icon.Visible = true; StartSyncAuto(); NetworkChange.NetworkAvailabilityChanged += NetChange; Application.Run(); }
private WifiAccessPoint GetCurrentWifiConnection() { WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Subscribe to events on this interface. if (WlanInterface == null) { WlanInterface = wlanIface; } if (wlanIface.InterfaceState == Wlan.WlanInterfaceState.Connected) { try { return(new WifiAccessPoint(WlanInterface.CurrentConnection.profileName, WlanInterface.CurrentConnection.wlanAssociationAttributes.dot11BssType)); } catch (Win32Exception ex) { Error.LastError = ex.ToString(); } } break; } return(WifiAccessPoint.NotConnected); }
static void Main(string[] args) { WlanClient client = new WlanClient(); // Wlan = new WlanClient(); try { foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList(); foreach (Wlan.WlanBssEntry network in wlanBssEntries) { int rss = network.rssi; // MessageBox.Show(rss.ToString()); byte[] macAddr = network.dot11Bssid; string tMac = ""; for (int i = 0; i < macAddr.Length; i++) { tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper(); } Console.WriteLine("Found network with SSID {0}.", System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).ToString()); Console.WriteLine("Signal: {0}%.", network.linkQuality); Console.WriteLine("BSS Type: {0}.", network.dot11BssType); Console.WriteLine("MAC: {0}.", tMac); Console.WriteLine("RSSID:{0}", rss.ToString()); } Console.ReadLine(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private async Task GetSignals() { await Task.Delay(10); WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in networks) { string profileName = Encoding.ASCII.GetString(network.dot11Ssid.SSID, 0, (int)network.dot11Ssid.SSIDLength); int signalStrength = (int)network.wlanSignalQuality; if (!_profiles.Any(p => p.Name == profileName)) { _profiles.Add(new Profile() { Name = profileName, Password = string.Empty, SignalStrength = signalStrength }); } } } }
private void StartWifi() { WlanClient client = new WlanClient(); try { if (client.Interfaces == null) { WifiName = "wifi 未连接"; } else { WlanClient.WlanInterface wlan = client.Interfaces[0]; string wifi = wlan.CurrentConnection.profileName; Wlan.WlanInterfaceState wifistate = wlan.CurrentConnection.isState; if (Wlan.WlanInterfaceState.Connected == wifistate) { WifiName = wifi;//wifi成功连接 string ControlIp = Utilities.ReadIni("ControlUrl", "controlUrl", ""); string Port = Utilities.ReadIni("Port", "port", ""); controlType = InitWIFISocket(ControlIp, Port) ? 0 : 2; if (0 == controlType) { InitHeartPackage(); } } } } catch (Exception ex) { string msg = ex.Message; } }
/// <summary> /// 枚举所有无线设备接收到的SSID /// </summary> public void ScanSSID() { WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Lists all networks with WEP security Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in networks) { WIFISSID targetSSID = new WIFISSID(); targetSSID.wlanInterface = wlanIface; targetSSID.wlanSignalQuality = (int)network.wlanSignalQuality; targetSSID.SSID = GetStringForSSID(network.dot11Ssid); targetSSID.dot11DefaultAuthAlgorithm = network.dot11DefaultAuthAlgorithm.ToString(); targetSSID.dot11DefaultCipherAlgorithm = network.dot11DefaultCipherAlgorithm.ToString(); Console.WriteLine(targetSSID.SSID); if (targetSSID.SSID.ToLower().Equals("cmcc")) { cmccWifiSSID = targetSSID; return; } } } } // EnumSSID
public static IEnumerable <AccessPoint> GetAccessPoints() { // Work around for a more accurate list of access points. // Source: I found there was an odd issue with this approach. it seemed as if AP info // would “trickle” in over time; the second time I opened the menu there would be // more access points. I don’t know why that was, but I added a bit of extra code with // the intent of providing a larger set of “seed” networks when the menu is opened for // the first time. It seems like the act of inspecting Access Points causes more to be // actually added. // (https://bc-programming.com/blogs/2017/01/retrieving-wifi-access-point-information-in-c/) WlanClient wlanClient = new WlanClient(); foreach (WlanInterface wlanInterface in wlanClient.Interfaces) { Dictionary <string, WlanProfileInfo> profileData = new Dictionary <string, WlanProfileInfo>(); foreach (var profile in wlanInterface.GetProfiles()) { profileData.Add(profile.profileName, profile); } foreach (WlanAvailableNetwork network in wlanInterface.GetAvailableNetworkList(0)) { WlanProfileInfo wlanProfileInfo; if (profileData.ContainsKey(network.profileName)) { wlanProfileInfo = profileData[network.profileName]; } } } // Actually retrieving the list of access points return(wifi.GetAccessPoints().OrderByDescending(ap => ap.SignalStrength)); }
// Use this for initialization void Start() { Debug.Log("Start"); // initialize data array data = new byte[width * height * 3]; // set textures MainRenderer.material.mainTexture = cameraTexture; SecondaryRenderer.material.mainTexture = blackTexture; cameraTexture = new Texture2D(width, height); blackTexture = new Texture2D(1, 1); blackTexture.SetPixel(0, 0, Color.black); blackTexture.Apply(); // Initialize drone videoPacketDecoderWorker = new VideoPacketDecoderWorker(PixelFormat.BGR24, true, OnVideoPacketDecoded); videoPacketDecoderWorker.Start(); droneClient = new DroneClient("192.168.1.1"); droneClient.UnhandledException += HandleUnhandledException; droneClient.VideoPacketAcquired += OnVideoPacketAcquired; droneClient.NavigationDataAcquired += navData => navigationData = navData; videoPacketDecoderWorker.UnhandledException += HandleUnhandledException; droneClient.Start(); // activate main drone camera switchDroneCamera(AR.Drone.Client.Configuration.VideoChannelType.Vertical); // determine connection client = new WlanClient(); }
static void Main(string[] args) { WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Lists all networks with WEP security Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in networks) { if (network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP) { Console.WriteLine("Found WEP network with SSID {0}.", GetStringForSSID(network.dot11Ssid)); } } // Retrieves XML configurations of existing profiles. // This can assist you in constructing your own XML configuration // (that is, it will give you an example to follow). foreach (Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles()) { string name = profileInfo.profileName; // this is typically the network's SSID string xml = wlanIface.GetProfileXml(profileInfo.profileName); } // Connects to a known network with WEP security 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); } }
public void Init(out Exception error) { error = null; if (Utilities.IsXp()) { return; } try { WlanClient = new WlanClient(); } catch (Win32Exception exception) { error = exception; return; } catch (DllNotFoundException) { error = new Exception(Localizer.GetString("WlanapiNotFound")); return; } WlanClient.InterfaceArrivedEvent.ItsEvent += WlanClient_InterfaceArrivedEvent; WlanClient.InterfaceRemovedEvent.ItsEvent += WlanClient_InterfaceRemovedEvent; }
public static string[] GetInterfaceNames() { using (var client = new WlanClient()) { return(client.Interfaces.Select(x => x.InterfaceName).ToArray()); } }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { if (File.Exists(".\\data.dat")) { times = times.Load(".\\data.dat"); } SetText(tbWiFi, times.WLANID, times.connectOnWLAN); WlanClient client = new WlanClient(); while (true) { foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Lists all networks with WEP security Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in networks) { String nam = network.profileName; //if (nam == "wlan_lab_01") if (nam == times.WLANID || rbProgramm.Checked) { times.addTimestamp(); times.Save(times, ".\\data.dat"); } } } System.Threading.Thread.Sleep(1000); } }
private string GetWifiList() { string bac = ""; List <MyWifiInfo> lstMyWifiInfo = new List <MyWifiInfo>(); WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Lists all available networks Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in networks) { //byte[] macAddr = network.dot11Ssid; //string tMac = ""; //for (int i = 0; i < macAddr.Length; i++) //{ // tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper(); //} bac += "Found network with SSID {0}." + GetStringForSSID(network.dot11Ssid) + "[Signal Quality :" + network.wlanSignalQuality + "]" + Environment.NewLine; lstMyWifiInfo.Add(new MyWifiInfo(GetStringForSSID(network.dot11Ssid), (int)network.wlanSignalQuality, Enum.GetName(typeof(NativeWifi.Wlan.Dot11BssType), network.dot11BssType), network.profileName)); // network.dot11DefaultAuthAlgorithm } } bac = ""; var DistinctItems = lstMyWifiInfo.GroupBy(x => x.Name).Select(y => y.First()); DistinctItems.OrderByDescending(c => c.SignalStrength).ToList().ForEach(f => { bac += f.SignalStrength + "," + f.Name + ",0,0" + Environment.NewLine; }); return(bac); }
private static void doList() { List <string> list = new List <string>(); WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Lists all networks with WEP security Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in networks) { Wlan.Dot11Ssid ssid = network.dot11Ssid; string networkname = Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength); if (!string.IsNullOrEmpty(networkname)) { list.Add(networkname.ToString()); } } } foreach (var s in list.OrderBy(l => l)) { Console.WriteLine(s); } }
private static Guid?GetInterfaceGuid(string interfaceName) { using (var client = new WlanClient()) { return(client.Interfaces.FirstOrDefault(x => x.InterfaceName == interfaceName)?.InterfaceGuid); } }
/// <summary> /// Enumerates SSIDs of connected wireless LANs. /// </summary> /// <returns>SSIDs</returns> public static IEnumerable <string> EnumerateConnectedNetworkSsids() { using (var client = new WlanClient()) { var interfaceInfoList = GetInterfaceInfoList(client.Handle); foreach (var interfaceInfo in interfaceInfoList) { var connection = GetConnectionAttributes(client.Handle, interfaceInfo.InterfaceGuid); if (connection.isState != WLAN_INTERFACE_STATE.wlan_interface_state_connected) { continue; } var association = connection.wlanAssociationAttributes; if (string.IsNullOrEmpty(association.dot11Ssid.ToString())) { continue; } Debug.WriteLine("Interface: {0}, SSID: {1}, BSSID: {2}, Signal: {3}", interfaceInfo.strInterfaceDescription, association.dot11Ssid, association.dot11Bssid, association.wlanSignalQuality); yield return(association.dot11Ssid.ToString()); } } }
void bg_DoWork(object sender, DoWorkEventArgs e) { ObservableCollection <WirelessDevice> devices = new ObservableCollection <WirelessDevice>(); WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Lists all networks in the vicinity Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in networks) { string ssid = GetStringForSSID(network.dot11Ssid); string msg = "Found network with SSID " + ssid; log.dispatchLogMessage(msg); msg = "Signal: " + network.wlanSignalQuality; log.dispatchLogMessage(msg); msg = "BSS Type : " + network.dot11BssType; log.dispatchLogMessage(msg); msg = "Profile Name : " + network.profileName; log.dispatchLogMessage(msg); log.dispatchLogMessage(""); WirelessDevice d = new WirelessDevice(ssid, network.wlanSignalQuality); devices.Add(d); } } _unsecuredDevices = devices; e.Result = _unsecuredDevices; }
/// <summary> /// 显示所有wifi /// </summary> public void ScanSSID() { WlanClient client = new WlanClient(); foreach (WlanClient.WlanInterface wlanIface in client.Interfaces) { // Lists all networks with WEP security Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); foreach (Wlan.WlanAvailableNetwork network in networks) { WIFISSID targetSSID = new WIFISSID(); targetSSID.wlanInterface = wlanIface; targetSSID.wlanSignalQuality = (int)network.wlanSignalQuality; targetSSID.SSID = GetStringForSSID(network.dot11Ssid); //targetSSID.SSID = Encoding.Default.GetString(network.dot11Ssid.SSID, 0, (int)network.dot11Ssid.SSIDLength); targetSSID.dot11DefaultAuthAlgorithm = network.dot11DefaultAuthAlgorithm.ToString(); targetSSID.dot11DefaultCipherAlgorithm = network.dot11DefaultCipherAlgorithm.ToString(); ssids.Add(targetSSID); wifiListOKADDitem(GetStringForSSID(network.dot11Ssid), network.dot11DefaultCipherAlgorithm.ToString(), network.dot11DefaultAuthAlgorithm.ToString(), (int)network.wlanSignalQuality); if (GetStringForSSID(network.dot11Ssid).Equals(WillWifiSSID)) { var obj = new wifiSo(targetSSID, WillWifiPassword); Thread wificonnect = new Thread(obj.ConnectToSSID); wificonnect.Start(); //wifiso.ConnectToSSID(targetSSID, "ZMZGZS520");//连接wifi ShowCurrentWifiName(GetStringForSSID(network.dot11Ssid)); } } } }
private void Form1_Load(object sender, EventArgs e) { WlanClient wlanClient = new WlanClient(); wlanClient.Open(); wlanClient.Interfaces[0].GetNetwork(); }
/// <summary> /// Set the position of a wireless profile in preference order. /// </summary> /// <param name="profileName">Profile name</param> /// <param name="interfaceGuid">Interface GUID</param> /// <param name="position">Position (starting from 0)</param> /// <returns>True if set.</returns> public static bool SetProfilePosition(string profileName, Guid interfaceGuid, int position) { if (string.IsNullOrWhiteSpace(profileName)) return false; if (interfaceGuid == default(Guid)) return false; if (position < 0) return false; using (var client = new WlanClient()) { return SetProfilePosition(client.Handle, interfaceGuid, profileName, (uint)position); } }
/// <summary> /// Disconnect from a wireless LAN. /// </summary> /// <param name="interfaceGuid">Interface GUID</param> /// <param name="timeoutDuration">Timeout duration</param> /// <returns>True if succeeded. False if failed or timed out.</returns> public static async Task<bool> DisconnectAsync(Guid interfaceGuid, TimeSpan timeoutDuration) { if (interfaceGuid == default(Guid)) return false; using (var client = new WlanClient()) { var tcs = new TaskCompletionSource<bool>(); Action<IntPtr, IntPtr> callback = (data, context) => { var notificationData = Marshal.PtrToStructure<WLAN_NOTIFICATION_DATA>(data); if (notificationData.NotificationSource != WLAN_NOTIFICATION_SOURCE_ACM) return; //Debug.WriteLine("Callback: {0}", (WLAN_NOTIFICATION_ACM)notificationData.NotificationCode); switch (notificationData.NotificationCode) { case (uint)WLAN_NOTIFICATION_ACM.wlan_notification_acm_disconnected: Task.Run(() => tcs.SetResult(true)); break; } }; RegisterNotification(client.Handle, WLAN_NOTIFICATION_SOURCE_ACM, callback); var result = Disconnect(client.Handle, interfaceGuid); if (!result) tcs.SetResult(false); var disconnectTask = tcs.Task; var completedTask = await Task.WhenAny(disconnectTask, Task.Delay(timeoutDuration)); return (completedTask == disconnectTask) ? disconnectTask.Result : false; } }
/// <summary> /// Enumerate available wireless LANs. /// </summary> /// <returns>Wireless LANs</returns> /// <remarks>If multiple profiles are associated with a same network, there will be multiple entries /// with the same SSID.</remarks> public static IEnumerable<NetworkPack> EnumerateAvailableNetworks() { using (var client = new WlanClient()) { var interfaceInfoList = GetInterfaceInfoList(client.Handle); foreach (var interfaceInfo in interfaceInfoList) { var availableNetworkList = GetAvailableNetworkList(client.Handle, interfaceInfo.InterfaceGuid); foreach (var availableNetwork in availableNetworkList) { //Debug.WriteLine("Interface: {0}, SSID: {1}, Signal: {2}", // interfaceInfo.strInterfaceDescription, // availableNetwork.dot11Ssid.ToSsidString(), // availableNetwork.wlanSignalQuality); yield return new NetworkPack( interfaceInfo.InterfaceGuid, availableNetwork.dot11Ssid.ToSsidString(), ConvertToBssType(availableNetwork.dot11BssType), (int)availableNetwork.wlanSignalQuality, availableNetwork.strProfileName); } } } }
/// <summary> /// Enumerate wireless profiles in preference order. /// </summary> /// <returns>Wireless profiles</returns> public static IEnumerable<ProfilePack> EnumerateProfiles() { using (var client = new WlanClient()) { var interfaceInfoList = GetInterfaceInfoList(client.Handle); foreach (var interfaceInfo in interfaceInfoList) { var availableNetworkList = GetAvailableNetworkList(client.Handle, interfaceInfo.InterfaceGuid) .Where(x => !string.IsNullOrWhiteSpace(x.strProfileName)) .ToArray(); var connection = GetConnectionAttributes(client.Handle, interfaceInfo.InterfaceGuid); var interfaceIsConnected = (connection.isState == WLAN_INTERFACE_STATE.wlan_interface_state_connected); var profileInfoList = GetProfileInfoList(client.Handle, interfaceInfo.InterfaceGuid); int position = 0; foreach (var profileInfo in profileInfoList) { var availableNetwork = availableNetworkList.FirstOrDefault(x => x.strProfileName.Equals(profileInfo.strProfileName, StringComparison.Ordinal)); var signal = (int)availableNetwork.wlanSignalQuality; var profileIsConnected = interfaceIsConnected && profileInfo.strProfileName.Equals(connection.strProfileName, StringComparison.Ordinal); //Debug.WriteLine("Interface: {0}, Profile: {1}, Position: {2}, Signal {3}, IsConnected {4}", // interfaceInfo.strInterfaceDescription, // profileInfo.strProfileName, // position, // signal, // profileIsConnected); var profile = GetProfile( client.Handle, profileInfo.strProfileName, interfaceInfo.InterfaceGuid, interfaceInfo.strInterfaceDescription, position++, signal, profileIsConnected); if (profile != null) yield return profile; } } } }
/// <summary> /// Delete a wireless profile. /// </summary> /// <param name="profileName">Profile name</param> /// <param name="interfaceGuid">Interface GUID</param> /// <returns>True if deleted. False if could not delete.</returns> public static bool DeleteProfile(string profileName, Guid interfaceGuid) { if (string.IsNullOrWhiteSpace(profileName)) return false; if (interfaceGuid == default(Guid)) return false; using (var client = new WlanClient()) { return DeleteProfile(client.Handle, interfaceGuid, profileName); } }
/// <summary> /// Request wireless interfaces to scan available wireless LANs. /// </summary> /// <param name="timeoutDuration">Timeout duration</param> public static async Task ScanAsync(TimeSpan timeoutDuration) { using (var client = new WlanClient()) { var interfaceInfoList = GetInterfaceInfoList(client.Handle); var interfaceCount = interfaceInfoList.Length; var tcs = new TaskCompletionSource<bool>(); Action<IntPtr, IntPtr> callback = (data, context) => { var notificationData = Marshal.PtrToStructure<WLAN_NOTIFICATION_DATA>(data); if (notificationData.NotificationSource != WLAN_NOTIFICATION_SOURCE_ACM) return; //Debug.WriteLine("Callback: {0}", (WLAN_NOTIFICATION_ACM)notificationData.NotificationCode); switch (notificationData.NotificationCode) { case (uint)WLAN_NOTIFICATION_ACM.wlan_notification_acm_scan_complete: Debug.WriteLine("Scan succeeded."); CheckScanCount(tcs, ref interfaceCount); break; case (uint)WLAN_NOTIFICATION_ACM.wlan_notification_acm_scan_fail: Debug.WriteLine("Scan failed."); CheckScanCount(tcs, ref interfaceCount); break; } }; RegisterNotification(client.Handle, WLAN_NOTIFICATION_SOURCE_ACM, callback); foreach (var interfaceInfo in interfaceInfoList) { var result = Scan(client.Handle, interfaceInfo.InterfaceGuid); if (!result) CheckScanCount(tcs, ref interfaceCount); } var scanTask = tcs.Task; await Task.WhenAny(scanTask, Task.Delay(timeoutDuration)); } }
/// <summary> /// Attempt to connect to a wireless LAN. /// </summary> /// <param name="profileName">Profile name</param> /// <param name="interfaceGuid">Interface GUID</param> /// <param name="bssType">BSS type</param> /// <param name="timeoutDuration">Timeout duration</param> /// <returns>True if succeeded. False if failed or timed out.</returns> public static async Task<bool> ConnectAsync(string profileName, Guid interfaceGuid, BssType bssType, TimeSpan timeoutDuration) { if (string.IsNullOrWhiteSpace(profileName)) return false; if (interfaceGuid == default(Guid)) return false; using (var client = new WlanClient()) { var tcs = new TaskCompletionSource<bool>(); Action<IntPtr, IntPtr> callback = (data, context) => { var notificationData = Marshal.PtrToStructure<WLAN_NOTIFICATION_DATA>(data); if (notificationData.NotificationSource != WLAN_NOTIFICATION_SOURCE_ACM) return; //Debug.WriteLine("Callback: {0}", (WLAN_NOTIFICATION_ACM)notificationData.NotificationCode); switch (notificationData.NotificationCode) { case (uint)WLAN_NOTIFICATION_ACM.wlan_notification_acm_connection_complete: Task.Run(() => tcs.SetResult(true)); break; case (uint)WLAN_NOTIFICATION_ACM.wlan_notification_acm_connection_attempt_fail: Task.Run(() => tcs.SetResult(false)); break; } }; RegisterNotification(client.Handle, WLAN_NOTIFICATION_SOURCE_ACM, callback); var result = Connect(client.Handle, interfaceGuid, profileName, ConvertFromBssType(bssType)); if (!result) tcs.SetResult(false); var connectTask = tcs.Task; var completedTask = await Task.WhenAny(connectTask, Task.Delay(timeoutDuration)); return (completedTask == connectTask) ? connectTask.Result : false; } }
/// <summary> /// Enumerate SSIDs of connected wireless LANs. /// </summary> /// <returns>SSIDs</returns> public static IEnumerable<string> EnumerateConnectedNetworkSsids() { using (var client = new WlanClient()) { var interfaceInfoList = GetInterfaceInfoList(client.Handle); foreach (var interfaceInfo in interfaceInfoList) { var connection = GetConnectionAttributes(client.Handle, interfaceInfo.InterfaceGuid); if (connection.isState != WLAN_INTERFACE_STATE.wlan_interface_state_connected) continue; var association = connection.wlanAssociationAttributes; Debug.WriteLine("Interface: {0}, SSID: {1}", interfaceInfo.strInterfaceDescription, association.dot11Ssid.ToSsidString()); yield return association.dot11Ssid.ToSsidString(); } } }