Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Miniscanner de puertos en PHP

  • 6 Respuestas
  • 2811 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 555
  • Actividad:
    0%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« en: Marzo 29, 2013, 11:10:20 pm »
Bueno siguiendo la idea de Sanko en su post: http://underc0de.org/foro/ruby/easy-portscanner-sanko/
pues entonces pense que se podia hacer en php y pues aqui lo dejo, no soy muy bueno programando pero a lo mejor  alguien le sirve....




Código: PHP
  1. <title>Escaner puertos</title>
  2. <style>
  3.         body{
  4.                 background-color: black;
  5.                 color:white;
  6.         }
  7. </style>
  8. <?php
  9. //no se cuantos puertos escanearemos entonces dejo que el script pueda ejecutarse y se tome su tiempo :P
  10. //si existe enviar entonces.... que realice los siguientes procesos
  11. if(isset($_POST['enviar'])){
  12.         //atrapo todos los parametros del formulario y les quito xss :P
  13.         $url=htmlentities($_POST['url'],ENT_QUOTES);
  14.         $pi=htmlentities($_POST['pi'],ENT_QUOTES);
  15.         $pf=htmlentities($_POST['pf'],ENT_QUOTES);
  16.         //si no esta vacio ninguno de los campos Nota: Esto se puede validar mucho mas tanto como tu quieras...
  17.         if(!empty($url) && !empty($pi) && !empty($pf)){
  18.                 //le muestro un mensaje con el objetivo y uno que espere mientras esta escaneando...
  19.                 echo '<h3>Objetivo:<font color="red">'.$url."</font></h3><br />";
  20.                 echo 'Espere mientras se esta escaneando puede tardar.<blink>.</blink><blink>.</blink><br />';
  21.                 //le asigno a $i el valor de pi que es el puerto inicial y mientras el puerto inicial sea menor al puerto final va aumentar de 1 a 1
  22.                 for($i=$pi;$i<=$pf;$i++){
  23.                         //si la coneccion se realizo existosamente entonces el puerto esta abierto
  24.                         //los parametros de fsockopen son la url,puerto,error coneccion,error coneccion,tiempo limite
  25.                         if($connect=@fsockopen($url,$i,$errno,$errstr,5)){
  26.                                 echo '<font color="#30E319">Puerto abierto:'.$i."</font><br />";
  27.                                 //cierro la coneccion
  28.                                 @fclose($connect);
  29.                                 //borro la variable connect se creara arriba
  30.                                 unset($connect);
  31.                         }else{
  32.                         //si no se realizo la coneccion no devuelvo nada
  33.                                 echo NULL;
  34.                                 //echo 'Puerto cerrado:'.$i."<br />"
  35.                 }
  36.                 //libero el buffer
  37.                 flush();
  38.         }
  39.         }else{
  40.                 //si los campos estan vacios muestra un mensaje y el formulario
  41.                 echo '<b>Rellena los campos correctamente</b><br />';
  42.                 echo '
  43.         <h1>MiniScanner de Puertos:</h1>
  44.                 <form action="" method="post">
  45.                         <b>Ingresa la url:</b><input name="url" type="text" value="www."><br />
  46.                         <b>Ingresa el puerto inicial:</b><input name="pi" type="text"><br />
  47.                         <b>Ingresa el puerto final:</b><input name="pf" type="text"><br />
  48.                         <input name="enviar" type="submit">
  49.                 </form>
  50.         ';
  51.         }
  52. }else{
  53.         //sino existe enviar que me muestre el formulario
  54.         echo '
  55.         <h1>MiniScanner de Puertos:</h1>
  56.                 <form action="" method="post">
  57.                         <b>Ingresa la url:</b><input name="url" type="text" value="www."><br />
  58.                         <b>Ingresa el puerto inicial:</b><input name="pi" type="text"><br />
  59.                         <b>Ingresa el puerto final:</b><input name="pf" type="text"><br />
  60.                         <input name="enviar" type="submit">
  61.                 </form>
  62.         ';
  63. }
  64.  
  65. ?>

Nota: Antes de que que me troleen pueden hacerme criticas constructivas :P xD salu2
« Última modificación: Marzo 27, 2014, 05:33:38 pm por Expermicid »
Pentest - Hacking & Security Services

Contact me: arthusu@gmail.com

Desconectado 2Fac3R

  • *
  • Underc0der
  • Mensajes: 241
  • Actividad:
    0%
  • Reputación 0
  • Why be a king, when you can be a god
    • Ver Perfil
    • Escuela de Hackers & Programación
  • Skype: rockeg_18
  • Twitter: @2Fac3R
« Respuesta #1 en: Marzo 30, 2013, 11:08:16 pm »
Yo también hice uno cuando leí sobre sockets en php jeje

Nota: Antes de que que me troleen pueden hacerme criticas constructivas :P xD salu2

No soy bueno troleando, así que me paso a las criticas constructivas xD...

  • Deberías empezar a usar funciones para una mejor "Programación estructurada"
  • Te recomiendo usar Operaciones Ternarias, así es más legíble el código ;)

Y en:

Código: PHP
  1. if(!empty($url) && !empty($pi) && !empty($pf)){...
  2.  

Puedes hacerlo más "simple":

Código: PHP
  1. if(!empty($url)&&($pi)&&($pf)){...
  2.  
8)

Zalu2!  ;D
Escuela de Hackers & Programación.
http://ihackndev.blogspot.com/

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 555
  • Actividad:
    0%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« Respuesta #2 en: Marzo 31, 2013, 01:54:56 am »
Yo también hice uno cuando leí sobre sockets en php jeje

Nota: Antes de que que me troleen pueden hacerme criticas constructivas :P xD salu2

No soy bueno troleando, así que me paso a las criticas constructivas xD...

  • Deberías empezar a usar funciones para una mejor "Programación estructurada"
  • Te recomiendo usar Operaciones Ternarias, así es más legíble el código ;)

Y en:

Código: PHP
  1. if(!empty($url) && !empty($pi) && !empty($pf)){...
  2.  

Puedes hacerlo más "simple":

Código: PHP
  1. if(!empty($url)&&($pi)&&($pf)){...
  2.  
8)

Zalu2!  ;D
Gracias bro :D salu2
Pentest - Hacking & Security Services

Contact me: arthusu@gmail.com

Desconectado Okol

  • *
  • Underc0der
  • Mensajes: 83
  • Actividad:
    0%
  • Reputación 0
  • Imaginando Programando & Avanzando!
    • Ver Perfil
    • Email
« Respuesta #3 en: Abril 16, 2013, 12:52:54 pm »
Muy bueno tu aporte, lo único es que concuerdo con 2facer, deberías comenzar a usar funciones; Es más sencillo y mucho más ordenado.
Saludos hermano.

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 555
  • Actividad:
    0%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« Respuesta #4 en: Abril 16, 2013, 02:15:33 pm »
Muy bueno tu aporte, lo único es que concuerdo con 2facer, deberías comenzar a usar funciones; Es más sencillo y mucho más ordenado.
Saludos hermano.
Gracias por la sugerencia la tomare en cuenta bro salu2
Pentest - Hacking & Security Services

Contact me: arthusu@gmail.com

Conectado F0M3T

  • *
  • Underc0der
  • Mensajes: 177
  • Actividad:
    0%
  • Reputación 0
  • Antes de empezar, mira el lienzo...
    • Ver Perfil
    • f0m3t blogsgsgsgsdfñsadf
« Respuesta #5 en: Abril 16, 2013, 02:48:57 pm »
Esta bueno.
Saludos.

Esto no se trata de ganar, se trata de no perder.

Desconectado WHK

  • *
  • Underc0der
  • Mensajes: 73
  • Actividad:
    1.67%
  • Reputación 4
    • Ver Perfil
« Respuesta #6 en: Abril 18, 2013, 02:35:40 pm »
Está bien bueno, pero podrias potenciarlo un poco mas, por ejemplo utilizando hilos de proceso para escanear de 5 en 5 puertos y la posibilidad de establecer manualmente el tiempo limite de conección del socket ya que talves queremos detectar algo que se demora en abrir.

¿Como se pueden hacer hilos o threads en php?, no se puede :P a menos que lo hagas desde la consola con forks o alguna librería especial, pero si se puede simular desde javascript.

Por ejemplo... tienes la vista en html con los botones, al hacer click javascript llamará 5 veces a una misma función no sincronizada, por ejemplo usando setTimeOut(function(){ ... }, 0) esto hará que se hagan 5 peticiones web al mismo archivo del escaneador pero con variables, donde pueden ser por ejemplo, ip, timeout del socket, puerto, etc.

Despues el retorno de este script que lo vaya mostrando en la vista de html con un cargador por cada socket.

Si lo haces no utilices gif animados porque si pones varios mas el settimeout vas a causar que se queden pegados, mejor usa css3:
http://fortawesome.github.io/Font-Awesome/

Ahi hay buenas animaciones.

Saludos.

 

¿Te gustó el post? COMPARTILO!