Ejemplo n.º 1
0
        internal static IEnumerable <AvailableNetworkPack> EnumerateAvailableNetworks(Base.WlanClient client)
        {
            using var container = new DisposableContainer <Base.WlanClient>(client);

            foreach (var interfaceInfo in EnumerateInterfaces(container.Content))
            {
                foreach (var availableNetwork in Base.GetAvailableNetworkList(container.Content.Handle, interfaceInfo.Id))
                {
                    if (!BssTypeConverter.TryConvert(availableNetwork.dot11BssType, out BssType bssType))
                    {
                        continue;
                    }

                    if (!AuthenticationAlgorithmConverter.TryConvert(availableNetwork.dot11DefaultAuthAlgorithm, out AuthenticationAlgorithm authenticationAlgorithm))
                    {
                        continue;
                    }

                    if (!CipherAlgorithmConverter.TryConvert(availableNetwork.dot11DefaultCipherAlgorithm, out CipherAlgorithm cipherAlgorithm))
                    {
                        continue;
                    }

                    yield return(new AvailableNetworkPack(
                                     interfaceInfo: interfaceInfo,
                                     ssid: new NetworkIdentifier(availableNetwork.dot11Ssid),
                                     bssType: bssType,
                                     signalQuality: (int)availableNetwork.wlanSignalQuality,
                                     isSecurityEnabled: availableNetwork.bSecurityEnabled,
                                     profileName: availableNetwork.strProfileName,
                                     authenticationAlgorithm: authenticationAlgorithm,
                                     cipherAlgorithm: cipherAlgorithm));
                }
            }
        }
Ejemplo n.º 2
0
        private static bool TryConvertBssNetwork(InterfaceInfo interfaceInfo, WLAN_BSS_ENTRY bssEntry, out BssNetworkPack bssNetwork)
        {
            bssNetwork = null;

            if (!BssTypeConverter.TryConvert(bssEntry.dot11BssType, out BssType bssType))
            {
                return(false);
            }

            if (!TryDetectBandChannel(bssEntry.ulChCenterFrequency, out float band, out int channel))
            {
                return(false);
            }

            bssNetwork = new BssNetworkPack(
                interfaceInfo: interfaceInfo,
                ssid: new NetworkIdentifier(bssEntry.dot11Ssid),
                bssType: bssType,
                bssid: new NetworkIdentifier(bssEntry.dot11Bssid),
                signalStrength: bssEntry.lRssi,
                linkQuality: (int)bssEntry.uLinkQuality,
                frequency: (int)bssEntry.ulChCenterFrequency,
                band: band,
                channel: channel);
            return(true);
        }
Ejemplo n.º 3
0
        internal static IEnumerable <AvailableNetworkPack> EnumerateAvailableNetworks(Base.WlanClient client)
        {
            using (var container = new DisposableContainer <Base.WlanClient>(client))
            {
                var interfaceInfoList = Base.GetInterfaceInfoList(container.Content.Handle);

                foreach (var interfaceInfo in interfaceInfoList.Select(x => new InterfaceInfo(x)))
                {
                    var availableNetworkList = Base.GetAvailableNetworkList(container.Content.Handle, interfaceInfo.Id);

                    foreach (var availableNetwork in availableNetworkList)
                    {
                        if (!BssTypeConverter.TryConvert(availableNetwork.dot11BssType, out BssType bssType))
                        {
                            continue;
                        }

                        //Debug.WriteLine("Interface: {0}, SSID: {1}, Signal: {2}, Security: {3}",
                        //	interfaceInfo.Description,
                        //	availableNetwork.dot11Ssid,
                        //	availableNetwork.wlanSignalQuality,
                        //	availableNetwork.bSecurityEnabled);

                        yield return(new AvailableNetworkPack(
                                         interfaceInfo: interfaceInfo,
                                         ssid: new NetworkIdentifier(availableNetwork.dot11Ssid.ToBytes(), availableNetwork.dot11Ssid.ToString()),
                                         bssType: bssType,
                                         signalQuality: (int)availableNetwork.wlanSignalQuality,
                                         isSecurityEnabled: availableNetwork.bSecurityEnabled,
                                         profileName: availableNetwork.strProfileName));
                    }
                }
            }
        }
Ejemplo n.º 4
0
        internal static IEnumerable <BssNetworkPack> EnumerateBssNetworks(Base.WlanClient client)
        {
            using (var container = new DisposableContainer <Base.WlanClient>(client))
            {
                var interfaceInfoList = Base.GetInterfaceInfoList(container.Content.Handle);

                foreach (var interfaceInfo in interfaceInfoList.Select(x => new InterfaceInfo(container.Content.Handle, x)))
                {
                    var networkList = EnumerateAvailableNetworks(client);

                    var networkBssEntryList = Base.GetNetworkBssEntryList(container.Content.Handle, interfaceInfo.Id);

                    foreach (var networkBssEntry in networkBssEntryList)
                    {
                        if (!BssTypeConverter.TryConvert(networkBssEntry.dot11BssType, out BssType bssType))
                        {
                            continue;
                        }

                        //Debug.WriteLine("Interface: {0}, SSID: {1}, BSSID: {2}, Signal: {3} Link: {4}, Frequency: {5}",
                        //	interfaceInfo.Description,
                        //	networkBssEntry.dot11Ssid,
                        //	networkBssEntry.dot11Bssid,
                        //	networkBssEntry.lRssi,
                        //	networkBssEntry.uLinkQuality,
                        //	networkBssEntry.ulChCenterFrequency);
                        var network = networkList.Where(o => o.Ssid.ToString() == new NetworkIdentifier(networkBssEntry.dot11Ssid.ToBytes(), networkBssEntry.dot11Ssid.ToString(), networkBssEntry.dot11Ssid.uSSIDLength).ToString());

                        //this program work get available network first and get bssnetwork list.
                        //so if can not found network. just skip the bss network.
                        //it just happen if you don't have a luck.
                        if (!network.Any())
                        {
                            continue;
                        }

                        yield return(new BssNetworkPack(
                                         interfaceInfo: interfaceInfo,
                                         network: network.First(),
                                         ssid: new NetworkIdentifier(networkBssEntry.dot11Ssid.ToBytes(), networkBssEntry.dot11Ssid.ToString(), networkBssEntry.dot11Ssid.uSSIDLength),
                                         bssType: bssType,
                                         bssid: new NetworkIdentifier(networkBssEntry.dot11Bssid.ToBytes(), networkBssEntry.dot11Bssid.ToString(), networkBssEntry.dot11Ssid.uSSIDLength),
                                         signalStrength: networkBssEntry.lRssi,
                                         linkQuality: (int)networkBssEntry.uLinkQuality,
                                         frequency: (int)networkBssEntry.ulChCenterFrequency,
                                         channel: DetectChannel(networkBssEntry.ulChCenterFrequency)));
                    }
                }
            }
        }
Ejemplo n.º 5
0
        internal static IEnumerable <BssNetworkPack> EnumerateBssNetworks(Base.WlanClient client, AvailableNetworkPack network)
        {
            using (var container = new DisposableContainer <Base.WlanClient>(client))
            {
                DOT11_SSID ssid;
                ssid.ucSSID      = network.Ssid.ToBytes();
                ssid.uSSIDLength = network.Ssid.GetLength();
                DOT11_BSS_TYPE bssTypes = BssTypeConverter.ConvertBack(network.BssType);

                var networkBssEntryList = Base.GetNetworkBssEntryList(container.Content.Handle, network.Interface.Id, ssid, bssTypes);

                foreach (var networkBssEntry in networkBssEntryList)
                {
                    if (!BssTypeConverter.TryConvert(networkBssEntry.dot11BssType, out BssType bssType))
                    {
                        continue;
                    }

                    //Debug.WriteLine("Interface: {0}, SSID: {1}, BSSID: {2}, Signal: {3} Link: {4}, Frequency: {5}",
                    //	interfaceInfo.Description,
                    //	networkBssEntry.dot11Ssid,
                    //	networkBssEntry.dot11Bssid,
                    //	networkBssEntry.lRssi,
                    //	networkBssEntry.uLinkQuality,
                    //	networkBssEntry.ulChCenterFrequency);


                    yield return(new BssNetworkPack(
                                     interfaceInfo: network.Interface,
                                     network: network,
                                     ssid: new NetworkIdentifier(networkBssEntry.dot11Ssid.ToBytes(), networkBssEntry.dot11Ssid.ToString(), networkBssEntry.dot11Ssid.uSSIDLength),
                                     bssType: bssType,
                                     bssid: new NetworkIdentifier(networkBssEntry.dot11Bssid.ToBytes(), networkBssEntry.dot11Bssid.ToString(), networkBssEntry.dot11Ssid.uSSIDLength),
                                     signalStrength: networkBssEntry.lRssi,
                                     linkQuality: (int)networkBssEntry.uLinkQuality,
                                     frequency: (int)networkBssEntry.ulChCenterFrequency,
                                     channel: DetectChannel(networkBssEntry.ulChCenterFrequency)));
                }
            }
        }
Ejemplo n.º 6
0
        internal static IEnumerable <BssNetworkPack> EnumerateBssNetworks(Base.WlanClient client)
        {
            using (var container = new DisposableContainer <Base.WlanClient>(client))
            {
                var interfaceInfoList = Base.GetInterfaceInfoList(container.Content.Handle);

                foreach (var interfaceInfo in interfaceInfoList.Select(x => new InterfaceInfo(x)))
                {
                    var networkBssEntryList = Base.GetNetworkBssEntryList(container.Content.Handle, interfaceInfo.Id);

                    foreach (var networkBssEntry in networkBssEntryList)
                    {
                        if (!BssTypeConverter.TryConvert(networkBssEntry.dot11BssType, out BssType bssType))
                        {
                            continue;
                        }

                        //Debug.WriteLine("Interface: {0}, SSID: {1}, BSSID: {2}, Signal: {3} Link: {4}, Frequency: {5}",
                        //	interfaceInfo.Description,
                        //	networkBssEntry.dot11Ssid,
                        //	networkBssEntry.dot11Bssid,
                        //	networkBssEntry.lRssi,
                        //	networkBssEntry.uLinkQuality,
                        //	networkBssEntry.ulChCenterFrequency);

                        yield return(new BssNetworkPack(
                                         interfaceInfo: interfaceInfo,
                                         ssid: new NetworkIdentifier(networkBssEntry.dot11Ssid.ToBytes(), networkBssEntry.dot11Ssid.ToString()),
                                         bssType: bssType,
                                         bssid: new NetworkIdentifier(networkBssEntry.dot11Bssid.ToBytes(), networkBssEntry.dot11Bssid.ToString()),
                                         signalStrength: networkBssEntry.lRssi,
                                         linkQuality: (int)networkBssEntry.uLinkQuality,
                                         frequency: (int)networkBssEntry.ulChCenterFrequency,
                                         channel: DetectChannel(networkBssEntry.ulChCenterFrequency)));
                    }
                }
            }
        }
Ejemplo n.º 7
0
        private static IEnumerable <AvailableNetworkGroupPack> EnumerateAvailableNetworkGroups(Base.WlanClient client, InterfaceInfo interfaceInfo)
        {
            foreach (var availableNetwork in Base.GetAvailableNetworkList(client.Handle, interfaceInfo.Id))
            {
                if (!BssTypeConverter.TryConvert(availableNetwork.dot11BssType, out BssType bssType))
                {
                    continue;
                }

                if (!AuthenticationAlgorithmConverter.TryConvert(availableNetwork.dot11DefaultAuthAlgorithm, out AuthenticationAlgorithm authenticationAlgorithm))
                {
                    continue;
                }

                if (!CipherAlgorithmConverter.TryConvert(availableNetwork.dot11DefaultCipherAlgorithm, out CipherAlgorithm cipherAlgorithm))
                {
                    continue;
                }

                var bssNetworks = Base.GetNetworkBssEntryList(client.Handle, interfaceInfo.Id,
                                                              availableNetwork.dot11Ssid, availableNetwork.dot11BssType, availableNetwork.bSecurityEnabled)
                                  .Select(x => TryConvertBssNetwork(interfaceInfo, x, out BssNetworkPack bssNetwork) ? bssNetwork : null)
                                  .Where(x => x is not null);

                yield return(new AvailableNetworkGroupPack(
                                 interfaceInfo: interfaceInfo,
                                 ssid: new NetworkIdentifier(availableNetwork.dot11Ssid),
                                 bssType: bssType,
                                 signalQuality: (int)availableNetwork.wlanSignalQuality,
                                 isSecurityEnabled: availableNetwork.bSecurityEnabled,
                                 profileName: availableNetwork.strProfileName,
                                 authenticationAlgorithm: authenticationAlgorithm,
                                 cipherAlgorithm: cipherAlgorithm,
                                 bssNetworks: bssNetworks));
            }
        }