Я пытаюсь отправить IP-пакет с помощью c#.
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());
Содержимое встроенного пакета показано ниже. Пакет TCP SYN (думаю, я его все равно создал)
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
Вывод:
sent 40 bytes to 192.168.0.198
Проблема в том, что я ничего не вижу в трассировке Wireshark. чтобы увидеть его?Если я использую браузер для подключения к 192.168.0.198, Wireshark показывает все пакеты, но ничего не показывает, когда я пытаюсь отправить пакет, используя приведенный выше код и данные.
Моя конфигурация:
Я работает от имени администратора, так что это не проблема с разрешениями
Windows7 (не работает на виртуальной машине)
Только беспроводное соединение (IP-конфигурация сообщает свой IP-адрес как 192.168.0.140)
Что я делаю неправильно?
Я уверен, что здесь применима бритва Оккама, но я б een смотреть на это в течение нескольких часов и не может понять, что не так.