Exemplo n.º 1
0
        public async Task Run(IOutputInput outputInput)
        {
            this.outputInput = outputInput;
            var address = Common.GetLocalAddress(outputInput);

            if (address == null)
            {
                return;
            }

            var mask = NetworkUtils.GetSubnetMask(address);

            var addresses = NetworkUtils.GetAddressesInNetwork(address, mask);

            if (addresses.Count == 0)
            {
                outputInput.WriteLine("No addresses to scan");
                return;
            }

            outputInput.WriteLine("Current IP address: " + address.ToString());
            outputInput.WriteLine("Mask: " + mask.ToString());
            outputInput.WriteLine("Addresses to scan: " + addresses.Count);
            outputInput.WriteLine("Scan started!");

            var pingScanner = new PingScanner()
            {
                StopOnFirstException = false,
                TasksCount           = 0
            };

            pingScanner.OnScanProgress += PingScanner_OnScanProgress;
            outputInput.StartTime();
            var result = await pingScanner.PingScan(new PingScanInput
            {
                Addresses = addresses,
                Retries   = 1,
                Timeout   = 1000
            });

            outputInput.StopTime();
            var processed = result.GetResults();
            var found     = processed.Where(s => s.Reply?.Status == IPStatus.Success);

            outputInput.WriteLine($"Scan completed. Scanned addresses: {processed.Count}, found {found.Count()} devices");
        }
Exemplo n.º 2
0
        public List <Device> ScanIpRange(ScanParameters parameters)
        {
            var devices = new List <Device>();

            var pingScan = new PingScanner();

            var ips = EnumerateIps(parameters.StartIp, parameters.LastIp);

            Parallel.ForEach(ips, (currentIp) =>
            {
                if (pingScan.CheckIp(currentIp))
                {
                    devices.Add(new Device {
                        Ip = currentIp
                    });
                }
            });

            return(devices);
        }