コード例 #1
0
ファイル: ARPReader.cs プロジェクト: onixion/MAD
        public static void CheckStart()
        {
            _running = true;
            Logger.Log("Start Checking Devices", Logger.MessageType.INFORM);
            InitInterfaces();
            Thread _listen = new Thread(ListenCheckResponses);

            _listen.Start();
            EthernetPacket _ethpac = NetworkHelper.CreateArpBasePacket(_dev.MacAddress);

            foreach (ModelHost _dummy in ModelHost.hostList)
            {
                _dummy.status = false;
                ExecuteRequests(_dummy.hostIP);
            }
            if (Environment.OSVersion.Platform == PlatformID.Unix)
            {
                Thread.Sleep(5000);
            }
            else
            {
                Thread.Sleep(100);
            }
            DeInitInterfaces();
            _running = false;
        }
コード例 #2
0
ファイル: ARPReader.cs プロジェクト: onixion/MAD
        private static void SendRequests()
        {
            Logger.Log("Sending ArpRequest flood..", Logger.MessageType.INFORM);
            uint _hosts = NetworkHelper.GetHosts(subnetMask);

            byte[] _netPartBytes = netAddress.GetAddressBytes();
            if (BitConverter.IsLittleEndian)
            {
                Array.Reverse(_netPartBytes);
            }
            uint           _netPartInt = BitConverter.ToUInt32(_netPartBytes, 0);
            EthernetPacket _ethpac     = NetworkHelper.CreateArpBasePacket(_dev.MacAddress);

            byte[] _targetBytes = new byte[4];
            for (int i = 1; i < _hosts - 1; i++)
            {
                _targetBytes = BitConverter.GetBytes(_netPartInt + i);
                Array.Resize(ref _targetBytes, 4);
                Array.Reverse(_targetBytes);
                IPAddress _target = new IPAddress(_targetBytes);
                ExecuteRequests(_ethpac, _target);
                if (_window != null)
                {
                    _window.progressBarArpScan.Value = Convert.ToInt16(10 + (((i * 100) / _hosts) * 0.8));
                }
            }
        }
コード例 #3
0
ファイル: ARPReader.cs プロジェクト: onixion/MAD
        public static void ExecuteRequests(IPAddress destIP)
        {
            EthernetPacket _ethpac = NetworkHelper.CreateArpBasePacket(_dev.MacAddress);
            ARPPacket      _arppac = new ARPPacket(ARPOperation.Request,
                                                   System.Net.NetworkInformation.PhysicalAddress.Parse("00-00-00-00-00-00"),
                                                   destIP,
                                                   _ethpac.SourceHwAddress,
                                                   srcAddress);

            _ethpac.PayloadPacket = _arppac;
            try
            {
                _dev.SendPacket(_ethpac);
            }
            catch (Exception ex)
            {
                Logger.Log("Problems with sending ArpRequest flood: " + ex.ToString(), Logger.MessageType.ERROR);
            }
        }
コード例 #4
0
ファイル: ARPReader.cs プロジェクト: onixion/MAD
        public static void FloodStart()
        {
            _running = true;
            Logger.Log("Start ArpReader", Logger.MessageType.INFORM);
            if (!InitInterfaces())
            {
                return;
            }
            if (_window != null)
            {
                _window.progressBarArpScan.Value = 5;
            }
            Thread _listen = new Thread(ListenFloodResponses);

            _listen.Start();
            if (_window != null)
            {
                _window.progressBarArpScan.Value = 10;
            }
            EthernetPacket _ethpac = NetworkHelper.CreateArpBasePacket(_dev.MacAddress);

            SendRequests();
            if (Environment.OSVersion.Platform == PlatformID.Unix)
            {
                Thread.Sleep(5000);
            }
            else
            {
                Thread.Sleep(20000);
            }
            DeInitInterfaces();
            _listen.Join();
            if (_window != null)
            {
                _window.progressBarArpScan.Value = 100;
            }
            _running = false;
        }