Я пытаюсь читать входящие пакеты в необработанном сокете с включенными заголовками. Глядя на другие проекты, такие как MJsniffer на CodeProject, я смог создать свой собственный код, чтобы читать все, что я хочу. Проблема: я только получаю информацию, которая является УТВЕРЖДАЮЩЕЙ. Вот мой код для инициализации необработанного сокета, код обработки на данном этапе не имеет значения ..
// Resolve the host name or IP address to am IPHostEntry instance
IPHostEntry hIPHostEntry = Dns.GetHostEntry( Dns.GetHostName());
// Initialize a new instance of the Socket class.
Socket hSocket = new Socket( AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Unspecified ); // IP is possible.
// Bind the socket to each resolved IP address.
foreach ( IPAddress hIPAddress in hIPHostEntry.AddressList ) try { hSocket.Bind( new IPEndPoint( hIPAddress, 0 )); } catch( Exception ) { continue; }
// Configure the incoming socket to accept all the required information.
hSocket.SetSocketOption( SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true );
// Configure the incoming socket to receive all the required information.
hSocket.IOControl( IOControlCode.ReceiveAll, BitConverter.GetBytes( 1 ), BitConverter.GetBytes( 1 ));
// Return the configured socket.
return hSocket;
Под управлением Windows 7 64-разрядная, у меня есть полные права администратора, как я могу изменить этот код, чтобы получить сокет, способный читать входящие пакеты? Исходящий - это хорошо, и мне это тоже нужно, но мне также нужны входящие пакеты.
P.S .: Я не хочу заставлять пользователей устанавливать WinPcap. Я не хочу захватывать или подделывать или что-то еще, просто прочитайте, это ДОЛЖНО быть возможным ..