示例#1
0
            public void Connect(string Bssid, string ProfileName)
            {
                byte[] desBssid = Bssid.Split(':').Select(x => Convert.ToByte(x, 16)).ToArray();

                Wlan.NDIS_OBJECT_HEADER ndoh;
                ndoh.Type     = Wlan.NDIS_OBJECT_TYPE_DEFAULT;
                ndoh.Revision = Wlan.DOT11_BSSID_LIST_REVISION_1;
                ndoh.Size     = (ushort)System.Runtime.InteropServices.Marshal.SizeOf(typeof(Wlan.DOT11_BSSID_LIST));

                Wlan.DOT11_BSSID_LIST desBssidList = new Wlan.DOT11_BSSID_LIST();
                desBssidList.Header             = ndoh;
                desBssidList.uNumOfEntries      = 1;
                desBssidList.uTotalNumOfEntries = 1;
                Wlan.DOT11_MAC_ADDRESS bssid = new Wlan.DOT11_MAC_ADDRESS();
                bssid.Dot11MacAddress  = desBssid;
                desBssidList.BSSIDs    = new Wlan.DOT11_MAC_ADDRESS[1];
                desBssidList.BSSIDs[0] = bssid;

                IntPtr desBssidListPtr = Marshal.AllocHGlobal(Marshal.SizeOf(desBssidList));

                Marshal.StructureToPtr(desBssidList, desBssidListPtr, false);


                Wlan.DOT11_SSID dot11Ssid = new Wlan.DOT11_SSID();
                dot11Ssid.ucSSID      = ProfileName;
                dot11Ssid.uSSIDLength = (uint)dot11Ssid.ucSSID.Length;

                IntPtr dot11SsidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(dot11Ssid));

                Marshal.StructureToPtr(dot11Ssid, dot11SsidPtr, false);

                string profileXml = GetProfileXml(ProfileName);

                SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true);

                Wlan.WlanConnectionParameters connectionParams = new Wlan.WlanConnectionParameters();
                connectionParams.wlanConnectionMode = Wlan.WlanConnectionMode.Profile;
                connectionParams.profile            = ProfileName;
                connectionParams.dot11SsidPtr       = dot11SsidPtr;
                connectionParams.dot11BssType       = Wlan.Dot11BssType.Any;
                connectionParams.flags = 0;
                connectionParams.desiredBssidListPtr = desBssidListPtr;
                Connect(connectionParams);
            }
示例#2
0
            public void Connect(string Bssid, string Ssid, string Pwd)
            {
                byte[] desBssid = Bssid.Split(':').Select(x => Convert.ToByte(x, 16)).ToArray();

                Wlan.NDIS_OBJECT_HEADER ndoh;
                ndoh.Type     = Wlan.NDIS_OBJECT_TYPE_DEFAULT;
                ndoh.Revision = Wlan.DOT11_BSSID_LIST_REVISION_1;
                ndoh.Size     = (ushort)System.Runtime.InteropServices.Marshal.SizeOf(typeof(Wlan.DOT11_BSSID_LIST));

                Wlan.DOT11_BSSID_LIST desBssidList = new Wlan.DOT11_BSSID_LIST();
                desBssidList.Header             = ndoh;
                desBssidList.uNumOfEntries      = 1;
                desBssidList.uTotalNumOfEntries = 1;
                Wlan.DOT11_MAC_ADDRESS bssid = new Wlan.DOT11_MAC_ADDRESS();
                bssid.Dot11MacAddress  = desBssid;
                desBssidList.BSSIDs    = new Wlan.DOT11_MAC_ADDRESS[1];
                desBssidList.BSSIDs[0] = bssid;

                IntPtr desBssidListPtr = Marshal.AllocHGlobal(Marshal.SizeOf(desBssidList));

                Marshal.StructureToPtr(desBssidList, desBssidListPtr, false);


                Wlan.DOT11_SSID dot11Ssid = new Wlan.DOT11_SSID();
                dot11Ssid.ucSSID      = Ssid;
                dot11Ssid.uSSIDLength = (uint)dot11Ssid.ucSSID.Length;

                IntPtr dot11SsidPtr = Marshal.AllocHGlobal(Marshal.SizeOf(dot11Ssid));

                Marshal.StructureToPtr(dot11Ssid, dot11SsidPtr, false);

                string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>auto</connectionMode><MSM><security><authEncryption><authentication>WPA2PSK</authentication><encryption>AES</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>false</protected><keyMaterial>{1}</keyMaterial></sharedKey></security></MSM></WLANProfile>", Ssid, Pwd);

                SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true);

                Wlan.WlanConnectionParameters connectionParams = new Wlan.WlanConnectionParameters();
                connectionParams.wlanConnectionMode = Wlan.WlanConnectionMode.Profile;
                connectionParams.profile            = Ssid;
                connectionParams.dot11SsidPtr       = dot11SsidPtr;
                connectionParams.dot11BssType       = Wlan.Dot11BssType.Any;
                connectionParams.flags = 0;
                connectionParams.desiredBssidListPtr = desBssidListPtr;
                Connect(connectionParams);
            }