Sto provando ad inviare un pacchetto IP usando C#.Perché non posso inviare questo pacchetto 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());
Il contenuto di builtPacket è mostrato di seguito. È un pacchetto IP contenente un pacchetto TCP SYN (è quello che penso di aver creato comunque).
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
l'output è:
sent 40 bytes to 192.168.0.198
il problema è che non vedo nulla nella traccia Wireshark. È come se i dati non arrivassero abbastanza in basso nello stack per consentire a Wireshark di vederlo? Se utilizzo un browser per connettersi a 192.168.0.198, Wireshark mostra tutti i pacchetti, ma non mostra nulla quando provo a inviare un pacchetto usando il codice e i dati sopra indicati.
mio config:
Sono in esecuzione come amministratore, quindi non è un problema di permessi.
Windows7 (non in esecuzione in una VM)
Connessione wireless solo (IP config segnala il suo IP come 192.168.0.140)
Che cosa sto facendo di sbagliato?
Sono sicuro che Occam's Razor si applica qui, ma ho osservato questo per ore e non riesco a capire cosa c'è che non va.
Avete filtri impostati in wireshark? – Default
Il ricevitore riceve il pacco? –
Ho provato con un filtro di "host 192.168.0.198" e nessun filtro, ma non ottengo niente dalla mia app con nessuno dei due. – TonyM