Escanear servidores proxy IP
//C# implementa el escaneo de puertos
//==== ======== ========================================== =====
Utilizar el sistema;
Utilizar el sistema. recolectar. Genérico;
Uso del sistema. Texto;
Usar System.Net;
Usar System.Net. Net .Sockets
Utiliza el sistema. Threading;
Aplicación de consola de espacio de nombres 3
{
Plan de clase
{
// Número de puertos escaneado
Recuento de subprocesos en ejecución estático interno = 0
Recuento de subprocesos en ejecución estático interno = 0
Lista estática interna & ltint & gtopenedPorts = nueva lista &; ltint & gt();
static int start port = 1;
static int endPort = 500
static int maxThread = 100;
p>
Static void Main(string[] args)
{
//Mensaje simple
Consola. WriteLine("//////////////////////////////////////////////// /// /////////;
Console.WriteLine("//Escritor;sentimiento");
Console.WriteLine("///// /////////////////////////////////////////////////// //// //;
Console. WriteLine("Ingrese el host a escanear;");
String host = Console. WriteLine("Ingrese el puerto a escanear, por ejemplo: 1-800");
String portRange =Console
startPort = portRange.split('- ')[0].trim());
endPort = int.parse(portRange.Split('-')[1].trim()); p>
for(int puerto). = puerto de inicio & lt puerto final++)
{
Escáner escáner = nuevo escáner (host, puerto);
{
p>
Subproceso = nuevo Subproceso(new ThreadStart(scanner.scanner));
Subproceso.ToString();
Subproceso /p>
recuento de subprocesos en ejecución++;
Subproceso.
Sleep(10);
// Bucle, un hilo completa su trabajo antes de iniciar un nuevo hilo, que también se puede llamar tecnología de ventana deslizante.
while (recuento de subprocesos en ejecución & gt; = maxThread);
}
// Bucle vacío hasta que se escaneen todos los puertos.
while(recuento escaneado+1 & lt; (puerto final-puerto de inicio));
Console. WriteLine();
Consola. WriteLine();
//Resultados de salida
Consola. WriteLine("Se ha completado el escaneo del host {0},\nSe escanearon un total de {1} puertos,\nPuertos abiertos: {2} ", host, (endPort - startPort), puertos abiertos. Contar < /p); >
foreach (puerto int en puerto abierto)
{
Consola. WriteLine("\tPort: {0} está abierto", port.ToString().pad left(6));
}
Consola. ReadLine();
}
}
Escáner de categorías
{
Cadena m_host
int m_port
Escáner público (host de cadena, puerto int)
{
m_host = host;
p>
m_port = puerto;
}
Escaneo de anulación pública()
{
Cliente TCP TC = nuevo cliente TCP() ;
tc. tiempo de espera de envío = tc. RecibirTimeout = 2000
Pruebe
{
tc. Connect(m_host, m_port);
if (tc. conectado)
{
Consola. WriteLine("El puerto {0} está abierto", m_port.ToString().PadRight(6));
programa puertos abiertos add(m _ port);
}
Captura
{
Consola. WriteLine("El puerto {0} está cerrado", m_port.ToString().PadRight(6));
}
Finalmente
{
tc. close();
tc = null
programa conteo escaneado++;
programa conteo de subprocesos en ejecución-; p>
}
}
}