Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
                }
            }
        }
Example #4
0
        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 = "";
        }
Example #5
0
        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);
        }
Example #6
0
        // 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);
             */
        }
Example #7
0
        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;
        }
Example #8
0
        //开始扫描
        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    = "扫描中...";
        }
Example #9
0
        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
            {
            }
        }
Example #10
0
        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();
        }
Example #11
0
        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);
        }
Example #12
0
        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();
        }
Example #13
0
        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);
        }
Example #14
0
    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);
        }
    }
Example #15
0
        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
                        });
                    }
                }
            }
        }
Example #16
0
        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;
            }
        }
Example #17
0
        /// <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));
        }
Example #19
0
    // 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();
    }
Example #20
0
        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);
            }
        }
Example #21
0
        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());
     }
 }
Example #23
0
        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);
            }
        }
Example #24
0
        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);
        }
Example #25
0
        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);
     }
 }
Example #27
0
        /// <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());
                }
            }
        }
Example #28
0
        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;
        }
Example #29
0
        /// <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));
                    }
                }
            }
        }
Example #30
0
        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;
			}
		}
Example #38
0
        /// <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();
                }
            }
        }