Ejemplo n.º 1
0
        private List <string> ScanMethod(BackgroundWorker worker)
        {
            string line;
            var    timeElapsed = new Stopwatch();

            timeElapsed.Start();
            var log = new List <string>();
            ScanMethodDelegate scan = null;

            //Determining the appropriate delegate to use
            switch (_scanMethod)
            {
            case "TCP Scan":
                scan = new ScanMethodDelegate(TCPScan);
                break;

            case "UDP Scan":
                scan = new ScanMethodDelegate(UDPScan);
                break;

            case "SYN Scan":
                scan = new ScanMethodDelegate(SYNScan);
                break;
            }
            log.Add("#Port Scanner/Sweeper Project, Version 0.1, June 2009" + "\n");
            log.Add("#Scanner type used in current scan: " + _scannerType + "\n");
            log.Add("#" + _scanMethod + " initiated at: " + DateTime.Now.ToString() + "\n");
            if (_scannerType == "Port Scanner")
            {
                try
                {
                    IPAddress hostAddress = Dns.GetHostEntry(textBox3.Text).AddressList[0];
                    for (int port = portFrom; port <= portTo; port++)
                    {
                        Thread.Sleep(Convert.ToInt32(textBox5.Text));
                        line            = (PortOfHost(port, hostAddress, scan)) + "/" + IPPort.getDescription(port) + "\n";
                        percentComplete = (int)((float)(port - portFrom) / (float)(portTo - portFrom) * 100);
                        if (portFrom == portTo)
                        {
                            worker.ReportProgress(100);
                        }
                        else
                        {
                            worker.ReportProgress(percentComplete);
                        }
                        log.Add(line);
                    }
                }
                catch (SocketException ex)
                {
                    log.Add("#Scan ended unexpectedly after " + timeElapsed.Elapsed.Seconds + " seconds.\n");
                    Console.WriteLine(ex.Message);
                }
            }
            else
            {
                log.Add("Port sweeped: " + portFrom + "/" + IPPort.getDescription(portFrom) + "\n");
                string[]  addressList = Regex.Split(textBox3.Text.Trim(), " ");
                int       i           = 0;
                IPAddress hostAddress = null;
                foreach (var address in addressList)
                {
                    Thread.Sleep(Convert.ToInt32(textBox5.Text));
                    i++;
                    try
                    {
                        hostAddress = Dns.GetHostEntry(address).AddressList[0];
                        line        = "Host " + address + ":\n the port";
                        line       += (PortOfHost(portFrom, hostAddress, scan));
                    }
                    catch (SocketException ex)
                    {
                        line = address + " reports " + ex.Message + "\n";
                    }
                    percentComplete = i / (addressList.Length) * 100;
                    worker.ReportProgress(percentComplete);
                    log.Add(line);
                }
            }
            timeElapsed.Stop();
            log.Add("#Scan ended succesfully after " + timeElapsed.Elapsed.Minutes +
                    " minutes " + timeElapsed.Elapsed.Seconds + " seconds.\n");
            return(log);
        }