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; }
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); }
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(); }
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); }
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)); }