Escaneando Puertos mediante Socket y PHP

La programación de un Escaneador de Puertos puede resultar un interesante ejercicio para practicar con los Sockets en PHP e internarnos un poco mas en el conocimiento del funcionamiento de la comunicación entre Host y las redes.

El ejercicio consiste sencillamente en ir “llamando” a cada uno de los puertos de la máquina indicada (Por medio de su dirección IP). Si obtenemos respuesta, el puerto estará abierto, en caso contrario, obviamente no lo estará.

Para intentar establecer la conexión a cada uno de los puertos abiertos de la máquina utilizaremos la ya conocida función fsockopen ().

Aquí os dejo el código del ejemplo. He limitado el número de puertos a escanear a 100. Vosotros podeís cambiar este valor en el For. Esto, claro está, hará incrementar el tiempo de ejecución del Script.

<?php

/* -------------------------------------------
Insertaremos el Host a escanear en la URL

http://www.host.com/PortScan.php?host=xx.xxx.xx.xx;
http://www.host.com/PortScan.php?host=www.google.com;

*/

$Host = $_GET["host"];

//Volcamos el Listado de Puertos Scaneados en un tabla ...

echo '<table style="padding:8px;">';
echo '<tr style="background-color:gray;"><th style="font-size:14px; font-weight:bold;">Port</th> <th style="font-size:14px; font-weight:bold;">Estado</th> <th style="font-size:14px; font-weight:bold;">Mensaje</th></tr>';

for ($i=0;$i<100;$i++) {

if ($port = @fsockopen ($Host, $i, $errno, $errstr, 10)) {

$Msg = fgets($port, 1024);

if ($Msg==""){ $Mensaje = "Puerto abierto, no emite respuesta."; }else{ $Mensaje = $Msg; }

echo '<tr style="background-color:red; padding:8px; font-weight:bold;"><td>'.$i.'</td> <td>Abierto</td> <td>'.$Mensaje.'</td></tr>';

fclose ();

}else{

echo '<tr style="background-color:green; padding:8px; font-weight:bold;"><td>'.$i.'</td> <td>Cerrado</td> <td>El puerto está cerrado.</td></tr>';

}

fflush();

}

echo '</table>';

?>

Anuncios

One Response to Escaneando Puertos mediante Socket y PHP

  1. Barnyx dice:

    interesante

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: