elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  socket ??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: socket ??  (Leído 2,718 veces)
<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
socket ??
« en: 3 Agosto 2011, 05:45 am »

Estaba haciendo un Escáner de puertos en C/C++, ya lo termine y sirve perfectamente, pero solo me escanea los puertos TCP, pero cuando quiero que me encane los puertos UDP, que es por datagramas yo pienso que solo tengo que cambiar de SOCK_STREAM a SOCK_DGRAM y listo ya es UDP, algunas funciones cambian lo se.
bueno hize el código y listo compilo y termine....

A la hora de probarlo O_O todos los puertos abiertos y creo que es un error jeje XD, porque con el TCP solo tenia como 4 abiertos, así que quiero que analicen el código y digamen si hay algun error en el..

Código:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <unistd.h>
  4. #include <netinet/in.h>
  5. #include <arpa/inet.h>
  6. #include <sys/socket.h>
  7. #include <sys/types.h>
  8.  
  9. #define FAMILIA AF_INET
  10. #define PUERTO_INICIO 0
  11. #define PUERTO_FIN 65535
  12.  
  13. int main(int argv,char *argc[]){
  14. if(argc[1] == NULL){
  15. printf("( Dirección Invalida )\n");
  16. return -1;
  17. }
  18. struct sockaddr_in conectar;
  19. conectar.sin_family = FAMILIA;
  20. inet_aton ( argc[1] , &(conectar.sin_addr));
  21. memset(conectar.sin_zero,0,8);
  22.  
  23.  
  24. for(int i = PUERTO_INICIO ;i <= PUERTO_FIN ; i++ ){
  25. int sock = socket( FAMILIA , SOCK_DGRAM , 0 );
  26. conectar.sin_port = htons(i);
  27. int Sconnect;
  28. socklen_t tam;
  29. tam = sizeof(sockaddr);
  30. Sconnect = connect(sock, (sockaddr *)&conectar , tam);
  31. if(Sconnect == -1){
  32. //printf("%d - Cerrado \n",i);
  33. }else{
  34. printf("%d - Abierto \n",i);
  35. }
  36. close(Sconnect);
  37. close(sock);
  38. }
  39. return 0;
  40. }
  41.  


En línea

<<<--Basura-->>>
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: socket ??
« Respuesta #1 en: 5 Agosto 2011, 20:28 pm »

Revisa bien la función socket:


http://msdn.microsoft.com/en-us/library/ms740506(v=vs.85).aspx


Al último parámetro no le pases 0 sino el tipo de protocolo que deseas.


En línea

Lambda


Desconectado Desconectado

Mensajes: 371



Ver Perfil WWW
Re: socket ??
« Respuesta #2 en: 5 Agosto 2011, 22:39 pm »

Independientemente de eso, UDP es un protocolo sin conexion, la llamada a connect es inutil, la unica manera de saber si un puerto UDP esta abierto es que la aplicacion que este escuchando en el responda a algun paquete especifico o usando el mensaje Destination Unreachable de ICMP
En línea

<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Re: socket ??
« Respuesta #3 en: 6 Agosto 2011, 07:40 am »

Entonces es incorrecto usar connect(); en una conexión por UDP
En línea

<<<--Basura-->>>
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No-Ip Y socket
Programación Visual Basic
n3ts4mura1 0 1,350 Último mensaje 15 Agosto 2006, 20:20 pm
por n3ts4mura1
Raw socket
Programación Visual Basic
yeikos 3 2,607 Último mensaje 28 Agosto 2007, 15:53 pm
por elmaro
socket en C
Programación C/C++
mapers 4 6,366 Último mensaje 28 Marzo 2011, 18:22 pm
por Garfield07
¿Socket 1156 es compatible con el socket 1155?
Hardware
Karkass 8 18,485 Último mensaje 4 Marzo 2021, 04:32 am
por MinusFour
Socket c++
Programación C/C++
prosebas 1 2,568 Último mensaje 12 Enero 2021, 22:15 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines