Ejemplo n.º 1
0
        public void SNC_GetAP_Info()
        {
            List <AP_Information> old = new List <AP_Information> {
            };

            byte[] data = new byte[4]; //broadcast data
            data[0] = 0xff;
            data[1] = 0x01;
            data[2] = 0x01;
            data[3] = 0x02;

            IPEndPoint ip = new IPEndPoint(IPAddress.Broadcast, 1500);            //braodcast IP address, and corresponding port

            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); //get all network interfaces of the computer
            foreach (NetworkInterface adapter in nics)
            {
                // Only select interfaces that are Ethernet type and support IPv4 (important to minimize waiting time)
                if (adapter.NetworkInterfaceType != NetworkInterfaceType.Ethernet)
                {
                    continue;
                }
                if (adapter.Supports(NetworkInterfaceComponent.IPv4) == false)
                {
                    continue;
                }
                try
                {
                    IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
                    foreach (var ua in adapterProperties.UnicastAddresses)
                    {
                        if (ua.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            //SEND BROADCAST IN THE ADAPTER
                            Socket bcSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //broadcast socket
                            bcSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
                            bcSocket.ReceiveTimeout = 200;                                                                //receive timout 200ms
                            IPEndPoint myLocalEndPoint = new IPEndPoint(ua.Address, 1500);
                            bcSocket.Bind(myLocalEndPoint);
                            bcSocket.SendTo(data, ip);

                            //RECEIVE BROADCAST IN THE ADAPTER
                            int    BUFFER_SIZE_ANSWER = 1024;
                            byte[] bufferAnswer       = new byte[BUFFER_SIZE_ANSWER];
                            do
                            {
                                try
                                {
                                    var recv   = bcSocket.Receive(bufferAnswer);
                                    var redata = new byte[recv];
                                    Array.Copy(bufferAnswer, 0, redata, 0, recv);

                                    if (recv == 36)
                                    {
                                        string dataS = Tools.ByteArrayToString(redata);

                                        int ip1 = Tools.ConvertHexToInt(dataS.Substring(10, 2));
                                        int ip2 = Tools.ConvertHexToInt(dataS.Substring(12, 2));
                                        int ip3 = Tools.ConvertHexToInt(dataS.Substring(14, 2));
                                        int ip4 = Tools.ConvertHexToInt(dataS.Substring(16, 2));

                                        string AP_IP      = ip1 + "." + ip2 + "." + ip3 + "." + ip4;
                                        string MacAddress = dataS.Substring(18, 12);
                                        string DeviceName = dataS.Substring(38, 32);

                                        AP_Information mAP_Information = new AP_Information();
                                        mAP_Information.AP_IP          = AP_IP;
                                        mAP_Information.AP_MAC_Address = MacAddress;
                                        mAP_Information.AP_Name        = Tools.ConvertHexToString(DeviceName);

                                        old.Add(mAP_Information);
                                    }
                                }
                                catch (Exception e)
                                {
                                    // //Console.Write(e.ToString() + Environment.NewLine);
                                    // bcSocket.Close();
                                    break;
                                }
                            } while (bcSocket.ReceiveTimeout != 0); //fixed receive timeout for each adapter that supports our broadcast
                            bcSocket.Close();
                        }
                    }
                }

                catch { }
            }
            ApScanEventArgs obj = new ApScanEventArgs();

            obj.data = old;
            onApScanEvent(this, obj);
        }
Ejemplo n.º 2
0
        public void SNC_GetAP_Info()
        {
            List <AP_Information> old = new List <AP_Information> {
            };

            /* byte[] data = new byte[4]; //broadcast data
             * data[0] = 0xff;
             * data[1] = 0x01;
             * data[2] = 0x01;
             * data[3] = 0x02;*/
            // byte[] data = new byte[] { 0x77, 0x77, 0x77, 0x2E, 0x75, 0x73, 0x72, 0x2E, 0x63, 0x6E };
            byte[]     data = Encoding.ASCII.GetBytes("HF-A11ASSISTHREAD");
            IPEndPoint ip   = new IPEndPoint(IPAddress.Broadcast, 48899);         //braodcast IP address, and corresponding port

            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); //get all network interfaces of the computer
            foreach (NetworkInterface adapter in nics)
            {
                // Only select interfaces that are Ethernet type and support IPv4 (important to minimize waiting time)
                if (adapter.NetworkInterfaceType != NetworkInterfaceType.Wireless80211)
                {
                    continue;
                }
                if (adapter.Supports(NetworkInterfaceComponent.IPv4) == false)
                {
                    continue;
                }
                try
                {
                    IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
                    foreach (var ua in adapterProperties.UnicastAddresses)
                    {
                        if (ua.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            //SEND BROADCAST IN THE ADAPTER
                            Console.WriteLine("FFFFFFFFFFFFF" + ua.Address);
                            Socket bcSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //broadcast socket
                            bcSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
                            bcSocket.ReceiveTimeout = 200;                                                                //receive timout 200ms
                            IPEndPoint myLocalEndPoint = new IPEndPoint(ua.Address, 48899);
                            bcSocket.Bind(myLocalEndPoint);
                            bcSocket.SendTo(data, ip);
                            //RECEIVE BROADCAST IN THE ADAPTER
                            int    BUFFER_SIZE_ANSWER = 1024;
                            byte[] bufferAnswer       = new byte[BUFFER_SIZE_ANSWER];

                            do
                            {
                                try
                                {
                                    IPEndPoint sssss  = new IPEndPoint(IPAddress.Any, 0);
                                    EndPoint   Remote = (EndPoint)(sssss);
                                    var        recv   = bcSocket.Receive(bufferAnswer);
                                    var        redata = new byte[recv];
                                    Array.Copy(bufferAnswer, 0, redata, 0, recv);
                                    Console.WriteLine("recv" + recv);
                                    Console.WriteLine("redata" + redata);
                                    Console.WriteLine("SSSSSSSSSSS" + Tools.ByteArrayToString(redata));
                                    Console.WriteLine("AAAAAAAAAAA" + Tools.ConvertHexToString(Tools.ByteArrayToString(redata)));
                                    if (recv == 27)
                                    {
                                        string str = Tools.ByteArrayToString(redata);
                                        Console.WriteLine("str" + str);
                                        string   data2 = Tools.ConvertHexToString(str);
                                        string[] IPMAC = data2.Split(',');
                                        string   str1  = IPMAC[0];
                                        string   str2  = IPMAC[1];

                                        AP_Information mAP_Information = new AP_Information();
                                        mAP_Information.AP_IP          = str1;
                                        mAP_Information.AP_MAC_Address = str2;

                                        old.Add(mAP_Information);
                                    }
                                }
                                catch (Exception e)
                                {
                                    // Console.Write(e.ToString() + Environment.NewLine);
                                    // bcSocket.Close();
                                    break;
                                }
                            } while (bcSocket.ReceiveTimeout != 0); //fixed receive timeout for each adapter that supports our broadcast
                            bcSocket.Close();
                        }
                    }
                }

                catch { }
            }
            ApScanEventArgs obj = new ApScanEventArgs();

            obj.data = old;
            onApScanEvent(this, obj);
        }