Estoy tratando de enviar un paquete de IP usando C#.¿Por qué no puedo enviar este paquete de IP?
destAddress = IPAddress.Parse("192.168.0.198"),
destPort = 80;
// Create a raw socket to send this packet
rawSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
// Bind the socket to the interface specified
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.0.140"),0);
rawSocket.Bind(iep);
// Set the HeaderIncluded option since we include the IP header
rawSocket.SetSocketOption(socketLevel, SocketOptionName.HeaderIncluded, 1);
// Send the packet!
int rc = rawSocket.SendTo(builtPacket, new IPEndPoint(destAddress, destPort));
Console.WriteLine("sent {0} bytes to {1}", rc, destAddress.ToString());
El contenido de builtPacket se muestra a continuación. Es un paquete IP que contiene un paquete TCP SYN (Eso es lo que creo que creé de todos modos).
45 00 00 28 00 00 00 00 02 06 36 6E C0 A8 00 8C
C0 A8 00 C6 14 1E 00 50 00 00 00 00 00 00 00 00
05 02 FF FF E6 4F 00 00
la salida es:
sent 40 bytes to 192.168.0.198
el problema es que no se ve nada en la traza de Wireshark. Es como si los datos no estuvieran lo suficientemente lejos en la pila para que Wireshark lo viera? Si uso un navegador para conectarme a 192.168.0.198, Wireshark muestra todos los paquetes, pero no muestra nada cuando intento enviar un paquete usando el código y los datos anteriores.
Mi config:
Me postulo como admin así que no es un problema de permisos.
Windows 7 (no se ejecuta en una máquina virtual)
Sólo en conexión inalámbrica (IP config informan sobre su IP 192.168.0.140)
¿Qué estoy haciendo mal?
Estoy seguro de que la Navaja de Occam se aplica aquí, pero he estado mirando esto durante horas y no puedo entender lo que está mal.
¿Tiene algún filtro instalado en wireshark? – Default
¿El receptor recibe el paquete? –
He intentado con un filtro de "host 192.168.0.198" y sin filtro, pero tampoco obtengo nada de mi aplicación. – TonyM