Herramientas de usuario

Herramientas del sitio


Barra lateral

notas:programacion:sockets_en_linux:scanner_de_puertos_simple
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
 
 
main(int argc, char *argv[]) {
   int sock,rval,puerto;
   struct sockaddr_in server;
   struct hostent *hp, *gethostbyname();
 
   if (argc < 2) {
      printf("Uso: %s nombre_host \n", argv[0]);
      exit (1);
   }
   printf("\nEscaner de puertos (^C para salir)\n");
 
   hp = gethostbyname(argv[1]);
   if (hp == 0) {
      fprintf(stderr, "%s: No se puede resolver el nombre\n",
         argv[1]);
      exit(2);
   }
 
   for(puerto=0;1;puerto++){
 
   /* Creamos un socket orientado a conexion */
   sock = socket(PF_INET, SOCK_STREAM, 0);
   if (sock < 0) {
      perror("No se ha podido conseguir un socket");
      exit(1);
   }
 
   server.sin_family = AF_INET;
 
   memcpy((char *)&server.sin_addr, (char *)hp->h_addr, 
      hp->h_length);
   server.sin_port = htons(puerto);
 
   if (connect(sock, (struct sockaddr *)&server, 
   sizeof server)>=0)printf("Puerto abierto =>%d\n",puerto);
 
   close(sock);     
 
   }               
 
   exit(0);
}
notas/programacion/sockets_en_linux/scanner_de_puertos_simple.txt · Última modificación: 2014/02/07 16:04 por cayu

Herramientas de la página