c# - как осуществить сниффинг пакетов в приложении, не полагаясь на WinPCap?

ФОН: Я теперь понимаю, как записать приложение C#, которое может контролировать пакеты, идущие в/из сетевой плате на ПК, на котором работает приложение. Подход, который я знаю, полагается на http://www.winpcap.org/, уже устанавливаемый на ПК однако, и затем я использую обертку C#, такую как http://pcapdotnet.codeplex.com/ или http://sourceforge.net/projects/sharppcap/.

ВОПРОС: Мой вопрос однако, что я должен был бы сделать, чтобы смочь иметь приложение C#, которое может осуществить сниффинг пакетов, который НЕ требует, чтобы приложение сторонних производителей / драйверы было предварительно установлено?

РАЗЪЯСНЕНИЕ: Это, я действительно хочу приложение, которое я в настоящее время имею, но без любого требования для меня, чтобы сказать пользователю должным быть идти и загружать/устанавливать XYZ до способности использовать приложение. В целях вопроса предполагают, что автоматизация загрузки и установки приложения сторонних производителей / драйверы не позволяется также. (с WinPCap я не уверен, можно ли связать его, однако я полагаю, что Вы, как не предполагается, в любом случае, к сожалению),

спасибо

12
задан Greg 15 August 2010 в 00:53
поделиться

1 ответ

Лично я бы придерживался WinPCap. Но, поскольку вы спросили, можно прослушивать пакеты из сети, используя следующий код для включения сырых сокетов.

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
s.Bind(new IPEndPoint(IPAddress.Parse("<IP Address Here of NIC to sniff>"), 0));
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
byte[] inBytes = new byte[] { 1, 0, 0, 0 };
byte[] outBytes = new byte[] { 0, 0, 0, 0 };
s.IOControl(IOControlCode.ReceiveAll, inBytes, outBytes);

После этого вы можете использовать Socket.Receive или Socket.BeginReceive для чтения необработанных IP-пакетов.

6
ответ дан 2 December 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: