SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: falcatin en Sábado 12 de Agosto de 2006, 11:03

Título: Problema Con Sockets!
Publicado por: falcatin en Sábado 12 de Agosto de 2006, 11:03
Sólo quiero enviar con visulac++.net un paquete con la parte tcp e ip para ello.
creo el socket
sock = socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
creo la parte de ip entera
((ip_hdr *)(datospaquete))->proto=IPPROTO_TCP;
la parte tcp entera
((tcp_hdr *)(datospaquete+datasizeip))->Porigen=htons(porigen);
((tcp_hdr *)(datospaquete+datasizeip))->Pdestino=htons(pdestino);
Después creo el sockaddr_in y por último lo envio
sendto(sock,datospaquete,datasizeip+datasizetcp,0,(struct sockaddr*)&sock_addr,sizeof(sock_addr));

El problema es que sale un error 10004, Una operación de bloqueo fue interrumpida por una llamada a WSACancelBlockingCall.

He enviado un paquete ip, pero uno con tcp ip da error, ya empiezo a dudar de que se pueda hacer en windows.

Alguien sabe algo???.
Título: Re: Problema Con Sockets!
Publicado por: JuanK en Sábado 12 de Agosto de 2006, 17:42
Es mejor que coloques mas codigo por que el codigo que has puesto no me dice como has definido algunas variables:

datospaquete
datasizeip
datasizetcp
Título: Re: Problema Con Sockets!
Publicado por: falcatin en Domingo 13 de Agosto de 2006, 12:24
juank si kieres te envio el código, tu lo has intentado alguna vez? realmente se puede?
Título: Re: Problema Con Sockets!
Publicado por: JuanK en Domingo 13 de Agosto de 2006, 18:31
nunca lo he intentado, pero de que se puede se debe de poder, solo hay que insistirle y documentarce bien.
Título: Re: Problema Con Sockets!
Publicado por: falcatin en Domingo 13 de Agosto de 2006, 19:57
DEFINITIVAMENTE no se puede enviar paquetes construidos tcp con windows xp sp2, incluso si has instalado el MS05-019 tendrías que volver a darle permiso para utilizar los sockets raw.

Habrá k lanzarlo en win2000 o linux k remedio!.
Título: Re: Problema Con Sockets!
Publicado por: su - en Lunes 14 de Agosto de 2006, 02:37
Exactamente que quieres hacer?
Título: Re: Problema Con Sockets!
Publicado por: falcatin en Lunes 14 de Agosto de 2006, 23:37
Pues ciertamente ahora k ya se k sólo se puede enviar paquetes tcp,ip a través de win2000 o linux, kería saber como enviar un paquete arp ethernet.

pork por ejemplo el socket k sería

sock = socket(AF_INET,SOCK_RAW,IPPROTO_ARP);

IPPROTO_ARP No existe, cúal sería?

y después al crear el struct sockaddr addr;

sock_addr.sa_data cúal será pork si estuviesemos en linux sería eth0 pero en windows como distingues la tarjeta de red?.
Título: Re: Problema Con Sockets!
Publicado por: su - en Lunes 14 de Agosto de 2006, 23:57
no se como sea exactamente pero en Perl tienes que definir el protocolo primero.
Has algo como esto.
init proto = getprotobyname('tcp');
socket(Socket_Handle, AF_INET, SOCK_RAW, proto);
Pero no recuerdo, era algo asi.
Título: Re: Problema Con Sockets!
Publicado por: su - en Lunes 14 de Agosto de 2006, 23:59
En cuanto a arp ethernet, mira libpcap o algo asi.
Título: Re: Problema Con Sockets!
Publicado por: falcatin en Martes 15 de Agosto de 2006, 02:09
ok, gracias, más o menos ya se como va el tcp,

Y con WinPcap se puede hacer uso de algun modo para el visual c++.net y así implementarlo???

Pork sino creo k tampoco se puede enviar un paquete, creado por ti, ethernet.
Título: Re: Problema Con Sockets!
Publicado por: su - en Martes 15 de Agosto de 2006, 03:06
No se, que los de Visual c++ .net digan.
Por sierto, el paquete no es propiamente ethernet, es AF_INET, el ethernet, si mal no estoy se hace atraves de pcap o quizas con libnet hmmm, no se, mira el comando termcap.
Título: Re: Problema Con Sockets!
Publicado por: JuanK en Martes 15 de Agosto de 2006, 05:38
Cita de: "falcatin"
ok, gracias, más o menos ya se como va el tcp,

Y con WinPcap se puede hacer uso de algun modo para el visual c++.net y así implementarlo???

Pork sino creo k tampoco se puede enviar un paquete, creado por ti, ethernet.
Si se puede, tal como seria en lenguaje C.
Título: Re: Problema Con Sockets!
Publicado por: falcatin en Martes 15 de Agosto de 2006, 22:31
Pues sip, con Winpcap se puede hacer todo bastante más facíl,  incluso tiene modo remote, puedes capturar paquetes en modo promiscuo e incluso enviar paquetes
 :kicking:  :kicking:  :kicking:
Por lo menos eso pone en su página web.
Lo único es añadir la librería wpcap.lib y todo funciona. al menos ver los dispositivos de red y capturar un paquete que es lo k llevo probado.