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;
 }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
 private string PortOfHost(int port, IPAddress hostAddress, ScanMethodDelegate scanMethodDelegate)
 {
     return scanMethodDelegate(port, new IPEndPoint(hostAddress, port));
 }
        private string PerformScan()
        {
            var timeElapsed = new Stopwatch();
            timeElapsed.Start();

            StringBuilder logBuilder = new StringBuilder();

            ScanMethodDelegate scanMethodDelegate = null;

            //Determining the appropriate delegate to use
            switch (scanMethod)
            {
                case ScanMethod.TcpScan:
                    scanMethodDelegate = new ScanMethodDelegate(TcpScan);
                    break;
                case ScanMethod.UdpScan:
                    scanMethodDelegate = new ScanMethodDelegate(UdpScan);
                    break;
                case ScanMethod.SynScan:
                    scanMethodDelegate = new ScanMethodDelegate(SynScan);
                    break;
                default:
                    return String.Empty;
            }

            logBuilder.Append("# Port Scanner/Sweeper\r\n");
            logBuilder.AppendFormat("# Scanner type used in current scan: {0}\r\n", scannerTypeDictionary[scannerType]);
            logBuilder.AppendFormat("# {0} initiated at: {1}\r\n", scanMethodDictionary[scanMethod], DateTime.Now);

            if (scannerType == ScannerType.PortScanner)
            {
                IPAddress hostIPAddress = hostEntries[0].AddressList[0];

                for (int port = fromPort; port <= toPort; port++)
                {
                    Thread.Sleep(delay);

                    string message = InvokeScanMethod(scanMethodDelegate, hostIPAddress, port);
                    logBuilder.Append(message);

                    if (fromPort == toPort)
                    {
                        backgroundWorkerScan.ReportProgress(100);
                    }
                    else
                    {
                        float quota = (float)(port - fromPort) / (toPort - fromPort);
                        int percentComplete = (int)(quota * 100);
                        backgroundWorkerScan.ReportProgress(percentComplete);
                    }
                }
            }
            else // scannerType is ScannerType.PortSweeper
            {
                logBuilder.AppendFormat("Port sweeped: {0}\r\n", fromPort);

                for (int i = 0; i < hostEntries.Length; i++)
                {
                    Thread.Sleep(delay);

                    IPAddress hostAddress = hostEntries[i].AddressList[0];
                    string message = InvokeScanMethod(scanMethodDelegate, hostAddress, fromPort);

                    logBuilder.AppendFormat("Host {0}: {1}",
                        hostAddress,
                        message);

                    float quota = (float)(i + 1) / hostEntries.Length;
                    int percentComplete = (int)(quota * 100);
                    backgroundWorkerScan.ReportProgress(percentComplete);
                }
            }

            timeElapsed.Stop();

            logBuilder.AppendFormat("# Scan ended successfully after {0} minutes and {1} seconds.\r\n",
                timeElapsed.Elapsed.Minutes,
                timeElapsed.Elapsed.Seconds);

            return logBuilder.ToString();
        }
Ejemplo n.º 5
0
 private string PortOfHost(int port, IPAddress hostAddress, ScanMethodDelegate scanMethodDelegate)
 {
     return(scanMethodDelegate(port, new IPEndPoint(hostAddress, port)));
 }
 private string InvokeScanMethod(ScanMethodDelegate scanMethodDelegate, IPAddress ipAddress, int port)
 {
     IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);
     return scanMethodDelegate(ipEndPoint);
 }
Ejemplo n.º 7
0
 public PlugManager(LogExceptionDelegate aLogException, ScanMethodDelegate aScanMethod, QueueDelegate aQueueMethod)
 {
     LogException = aLogException;
     ScanMethod   = aScanMethod;
     Queue        = aQueueMethod;
 }
        private string PerformScan()
        {
            var timeElapsed = new Stopwatch();

            timeElapsed.Start();

            StringBuilder logBuilder = new StringBuilder();

            ScanMethodDelegate scanMethodDelegate = null;

            //Determining the appropriate delegate to use
            switch (scanMethod)
            {
            case ScanMethod.TcpScan:
                scanMethodDelegate = new ScanMethodDelegate(TcpScan);
                break;

            case ScanMethod.UdpScan:
                scanMethodDelegate = new ScanMethodDelegate(UdpScan);
                break;

            case ScanMethod.SynScan:
                scanMethodDelegate = new ScanMethodDelegate(SynScan);
                break;

            default:
                return(String.Empty);
            }

            logBuilder.Append("# Port Scanner/Sweeper\r\n");
            logBuilder.AppendFormat("# Scanner type used in current scan: {0}\r\n", scannerTypeDictionary[scannerType]);
            logBuilder.AppendFormat("# {0} initiated at: {1}\r\n", scanMethodDictionary[scanMethod], DateTime.Now);

            if (scannerType == ScannerType.PortScanner)
            {
                IPAddress hostIPAddress = hostEntries[0].AddressList[0];

                for (int port = fromPort; port <= toPort; port++)
                {
                    Thread.Sleep(delay);

                    string message = InvokeScanMethod(scanMethodDelegate, hostIPAddress, port);
                    logBuilder.Append(message);

                    if (fromPort == toPort)
                    {
                        backgroundWorkerScan.ReportProgress(100);
                    }
                    else
                    {
                        float quota           = (float)(port - fromPort) / (toPort - fromPort);
                        int   percentComplete = (int)(quota * 100);
                        backgroundWorkerScan.ReportProgress(percentComplete);
                    }
                }
            }
            else // scannerType is ScannerType.PortSweeper
            {
                logBuilder.AppendFormat("Port sweeped: {0}\r\n", fromPort);

                for (int i = 0; i < hostEntries.Length; i++)
                {
                    Thread.Sleep(delay);

                    IPAddress hostAddress = hostEntries[i].AddressList[0];
                    string    message     = InvokeScanMethod(scanMethodDelegate, hostAddress, fromPort);

                    logBuilder.AppendFormat("Host {0}: {1}",
                                            hostAddress,
                                            message);

                    float quota           = (float)(i + 1) / hostEntries.Length;
                    int   percentComplete = (int)(quota * 100);
                    backgroundWorkerScan.ReportProgress(percentComplete);
                }
            }

            timeElapsed.Stop();

            logBuilder.AppendFormat("# Scan ended successfully after {0} minutes and {1} seconds.\r\n",
                                    timeElapsed.Elapsed.Minutes,
                                    timeElapsed.Elapsed.Seconds);

            return(logBuilder.ToString());
        }
        private string InvokeScanMethod(ScanMethodDelegate scanMethodDelegate, IPAddress ipAddress, int port)
        {
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);

            return(scanMethodDelegate(ipEndPoint));
        }
Ejemplo n.º 10
0
 public PlugManager(LogExceptionDelegate aLogException, ScanMethodDelegate aScanMethod, QueueDelegate aQueueMethod)
 {
     LogException = aLogException;
     ScanMethod = aScanMethod;
     Queue = aQueueMethod;
 }