Beispiel #1
0
        private async Task ScanPorts(List <string> range, ObservableCollection <PortModel> openedPorts, int maxThreads)
        {
            var allTasks  = new List <Task>();
            var throttler = new SemaphoreSlim(initialCount: maxThreads);

            source = new CancellationTokenSource();

            foreach (var ip in range)
            {
                await throttler.WaitAsync(source.Token);

                allTasks.Add(
                    Task.Run(async() =>
                {
                    try
                    {
                        await PortScanning.PortDetecter(ip, openedPorts, source.Token);
                    }
                    finally
                    {
                        throttler.Release();
                    }
                }));
            }
            await Task.WhenAll(allTasks);
        }
Beispiel #2
0
        public void TryParseTest3()
        {
            string ip = "123.3.2";

            System.Net.IPAddress returnIP;
            var isValid = PortScanning.TryParse(ip, out returnIP);

            Assert.IsFalse(isValid);
        }
Beispiel #3
0
        public void GetRangeTest1()
        {
            string beginIPStr = "127.0.0.10";
            string endIPStr   = "127.0.0.1";

            IPAddress beginIP;
            IPAddress endIP;
            var       isBeginIPValid = PortScanning.TryParse(beginIPStr, out beginIP);
            var       isEndIPValid   = PortScanning.TryParse(endIPStr, out endIP);

            Assert.ThrowsException <ArgumentException>(() => PortScanning.GetIPRange(beginIP, endIP));
        }
Beispiel #4
0
        public void GetRangeTest2()
        {
            string beginIPStr = "127.0.0.1";
            string endIPStr   = "127.0.0.10";

            IPAddress beginIP;
            IPAddress endIP;
            var       isBeginIPValid = PortScanning.TryParse(beginIPStr, out beginIP);
            var       isEndIPValid   = PortScanning.TryParse(endIPStr, out endIP);

            var range = PortScanning.GetIPRange(beginIP, endIP);

            Assert.AreEqual(range.Count, 10);
        }
Beispiel #5
0
        public void GetRangeTest3()
        {
            string beginIPStr = "127.0.0.1";
            string endIPStr   = "127.0.0.10";

            IPAddress beginIP;
            IPAddress endIP;
            var       isBeginIPValid = PortScanning.TryParse(beginIPStr, out beginIP);
            var       isEndIPValid   = PortScanning.TryParse(endIPStr, out endIP);

            var range = PortScanning.GetIPRange(beginIP, endIP);

            Assert.IsTrue(range.Contains("127.0.0.7"));
            Assert.IsFalse(range.Contains("127.0.0.15"));
        }
Beispiel #6
0
        public async void ScanPortsAsync(object parameter)
        {
            try
            {
                if (ValidateIPs(_beginIPStr, _endIPStr))
                {
                    SetButtonsEnable(false);

                    List <string> range = new List <string>();

                    PortScanning.TryParse(_beginIPStr, out _beginIP);
                    PortScanning.TryParse(_endIPStr, out _endIP);

                    bool _isSameIP = _beginIPStr == _endIPStr;

                    if (_isSameIP)
                    {
                        _endIPStr = _beginIPStr;
                        range     = new List <string> {
                            _beginIPStr
                        };
                    }
                    else
                    {
                        try
                        {
                            range = PortScanning.GetIPRange(_beginIP, _endIP);
                        }
                        catch (ArgumentException ex)
                        {
                            MessageBox.Show(ex.Message, "Warning");
                            return;
                        }
                    }
                    //_openPorts = new ObservableCollection<PortModel>();
                    //dgOpenedPorts.ItemsSource = _openedPorts;

                    await ScanPorts(range, _openPorts, (int)_maxThreadsCount);
                }
                else
                {
                    return;
                }
            }
            catch (OperationCanceledException)
            {
                await _logger.LogAsync("Scanning was canceled", LogSeverity.Info);

                SetButtonsEnable(true);
                source = null;
                return;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
                await _logger.LogAsync(ex.ToString(), LogSeverity.Error);

                SetButtonsEnable(true);
                source = null;
                return;
            }
        }