2010-07-10 16 views
6

Intenté enviar paquetes SYN en mi red local y supervisarlos con Wireshark y todo funciona bien, excepto cuando trato de enviar un paquete a mi propia dirección IP que "parece" trabajo porque dice paquete enviado 1, pero realmente no se envía, no puedo ver el paquete en Wireshark ni ninguna respuesta al paquete. Mi configuración es una computadora A (192.168.0.1) con un servidor de socket TCP escuchando en el puerto 40508, y una computadora B (192.168.0.2).Scapy SYN enviar en nuestra propia dirección IP

en el equipo B i PRUEBA:

ip=IP(src="192.168.0.2",dst="192.168.0.1") 
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345) 
send(ip/SYN) 

Funciona bien, veo el paquete SYN en Wireshark y la respuesta SYN/ACK desde 192.168.0.1

en el equipo A pruebo:

ip=IP(src="192.168.0.1",dst="192.168.0.2") 
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345) 
send(ip/SYN) 

trabaja muy bien también, veo el paquete SYN y RST/ACK (no hay ningún servidor escucha en el puerto 40508 en 192.168.0.2 por lo que envía a/RST ACK) respuesta de 192.168.0.2

Pero cuando intento en el equipo A:

ip=IP(src="192.168.0.2",dst="192.168.0.1") 
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345) 
send(ip/SYN) 

No aparece nada en Wireshark, como si el paquete no fue enviado pero dijo que al igual que las otras pruebas: 1 enviados los paquetes. y no devolvió error alguno. Si ejecuto la misma prueba en la computadora B y trato de enviar un paquete a su propia dirección IP, tengo el mismo problema.

Para mi programa, realmente necesito enviar un paquete SYN a mi propia dirección IP, ¿hay alguna manera de hacerlo o es imposible?

Gracias de antemano,

Nolhian

Respuesta

2

Qué dispositivo de red (s) es la instalación de Wireshark escuchando en? Sospecho que está escuchando en la tarjeta de red real (ethernet, wifi o de otro modo, según Wireshark FAQ) y, al enviar desde una computadora a sí mismo, el sistema operativo puede pasar por alto el dispositivo (¿por qué molestarse?) Y simplemente hacer el "envío" copiando bits dentro de la pila TCP/IP en la memoria del kernel.

En otras palabras, sospecho que su paquete está siendo enviado, simplemente Wireshark puede no verlo. Para verificar esta hipótesis, puede intentar (por ejemplo) usar su navegador para visitar puertos existentes y no existentes en su máquina local, y ver si Wireshark ve esos paquetes o no.

+1

En otras palabras, el paquete se envía en la interfaz de bucle invertido. – Borealid

+0

Gracias por sus respuestas, lo comprobé y eso es exactamente, el paquete está en la interfaz loopback, wireshark lo ve en lo. Como no tengo respuesta SYN/ACK del paquete, supongo que nunca llega a 192.168.0.1, intenté también poner otro puerto sin escuchar nada y sin respuesta RST/ACK. Así que intenté hacer que el servidor escuchara en 127.0.0.1 en lugar de en 192.168.0.1 pero aún nada, el paquete generado se envía en el bucle invertido pero no responde. Si el servidor está en 127.0.0.1 y escribo un cliente de Python con una conexión de socket TCP, funciona bien ... – Nolhian

+0

Estoy realmente perdido allí :(Alguna idea de por qué nunca responde localmente, pero lo hace cuando el mismo paquete generado es enviado por otra computadora o cuando el socket TCP intenta conectarse (incluso localmente)? ​​ – Nolhian