SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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???.
-
Es mejor que coloques mas codigo por que el codigo que has puesto no me dice como has definido algunas variables:
datospaquete
datasizeip
datasizetcp
-
juank si kieres te envio el código, tu lo has intentado alguna vez? realmente se puede?
-
nunca lo he intentado, pero de que se puede se debe de poder, solo hay que insistirle y documentarce bien.
-
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!.
-
Exactamente que quieres hacer?
-
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?.
-
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.
-
En cuanto a arp ethernet, mira libpcap o algo asi.
-
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.
-
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.
-
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.
-
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.