Question

CONTEXTE : Je comprends maintenant comment écrire une application C # qui peut surveiller les paquets allant entrée / sortie de la carte réseau sur le PC l'application est en cours d'exécution sur. Le savoir approche que je compte sur http://www.winpcap.org/ étant déjà installé sur le PC cependant, puis-je utiliser un C # wrapper tels que http://pcapdotnet.codeplex.com/ ou http://sourceforge.net/projects/sharppcap/ .

QUESTION : Ma question cependant, qu'est-ce que je dois faire pour être en mesure d'avoir une application C # que les paquets de boîte qui ne nécessite pas une application 3ème partie / pilotes à être pré-installés?

CLARIFICATION : C'est que je veux vraiment l'application que j'ai actuellement mais sans aucune obligation pour moi de dire à l'utilisateur d'avoir à aller télécharger / installer XYZ avant de pouvoir utiliser l'application. Aux fins de la question supposent que l'automatisation du téléchargement et l'installation d'une application 3ème partie / les conducteurs ne sont pas autorisés non plus. (Avec WinPCap Je ne sais pas si vous pouvez bundle, mais je crois que vous n'êtes pas censé en tout cas, malheureusement)

Merci

Était-ce utile?

La solution

Personnellement, je collerait à WinPCap. Mais puisque vous avez demandé, il est possible de paquets de renifler du réseau à l'aide du code ci-dessous pour activer raw sockets.

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);

Une fois cela fait, vous pouvez utiliser Socket.Receive ou Socket.BeginReceive pour lire les paquets IP brut.

Autres conseils

Il y a un moyen de capturer les paquets entrants / sortants sur .NET en utilisant uniquement l'implémentation standard de Winsocks. Je l'ai vu un blog avec exemple de la façon, mais je n'ai pas le lien plus.

Longue histoire courte, il est un cas extrême de bord, car ce n'est pas ce que Winsocks (les fenêtres standard du pilote réseau) était destiné à être.

La raison Pcap est généralement nécessaire aux paquets de capture est, il utilise son propre pilote réseau NDIS qui débloque les fonctionnalités de votre carte réseau. En plus de cela, il fournit également un moyen facile de filtres fixés pour limiter la quantité de paquets étant capturé sur l'interface spécifiée.

IE, le pilote ignore les paquets d'un type spécifique au niveau du noyau au lieu du niveau usermode. Par conséquent, vous serez en mesure de filtrer les paquets beaucoup plus efficace et la capture sous des charges plus importantes sur le réseau.

Dans .NET, aux paquets de filtre, vous aurez besoin de fournir votre propre système de filtrage de paquets de couche d'application qui serait beaucoup moins efficace.

Windows bloque l'accès à des protocoles non standard pour des « raisons de sécurité » afin qu'ils ne soutiennent pas vraiment l'utilisation de paquets RAW pour la mise en réseau (même si le code peut exister pour le rendre possible). RAW paquets étaient toujours destinés à des recherches sur la conception de nouveaux protocoles, et non usage général.

il est généralement une bonne idée pour toutes ces raisons pour ramasser Winpcap et une enveloppe pour votre langue spécifique à mettre en œuvre tout type d'application capture.

Note: Personnellement, je préfère SharpPcap, mais je suis aussi partiale que je fais le développement du projet. Pcap.net est très similaire dans sa mise en œuvre en matière de capture, il diverge principalement en ce qui concerne la façon dont les paquets sont analysés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top