Pregunta

Antecedentes : ahora entiendo cómo escribir una aplicación de C # que puede supervisar los paquetes que va de entrada / salida de la tarjeta de red en el PC la aplicación se está ejecutando. El know enfoque que se basa en http://www.winpcap.org/ está ya instalado en el PC sin embargo, y luego yo uso un C # envoltura tales como http://pcapdotnet.codeplex.com/ o http://sourceforge.net/projects/sharppcap/ .

PREGUNTA : Mi pregunta sin embargo, lo que necesitaría hacer para ser capaz de tener una aplicación C # que los paquetes puede oler que no requiere un 3er aplicaciones de terceros / conductores a ser pre-instalados?

Aclaración : Eso es lo que realmente quiero la aplicación actualmente tengo, pero sin ningún requisito para mí para decirle al usuario a tener que ir y descargar / instalar XYZ antes de poder utilizar la aplicación. A los efectos de la cuestión asumen que la automatización de la descarga y la instalación de una aplicación de 3 ª parte / los conductores no se permite tampoco. (Con WinPCap No estoy seguro de si se puede empaquetarlo, sin embargo, creo que no se supone que en todo caso, por desgracia)

gracias

¿Fue útil?

Solución

En lo personal me pegaría a WinPCap. Pero ya que lo preguntas, es posible oler los paquetes de la red utilizando el siguiente código para permitir conexiones en crudo.

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

Una vez hecho esto, se puede utilizar Socket.Receive o Socket.BeginReceive para leer los paquetes IP sin procesar.

Otros consejos

Hay una manera de capturar los paquetes entrantes / salientes en .NET utilizando sólo la aplicación winsocks estándar. He visto un blog con ejemplo de cómo, pero no tengo el enlace más.

Para acortar una larga historia, es un caso límite extremo, porque eso no es lo winsocks (las ventanas estándar de controlador de red) fue diseñado.

La razón Pcap suele ser necesario capturar paquetes es, utiliza su propio controlador de red NDIS que abre todas las capacidades de su NIC. Además de eso, también proporciona una manera fácil de establecer filtros para limitar la cantidad de paquetes que se capturó en la interfaz especificada.

IE, el conductor ignorará los paquetes de un tipo específico en el nivel de núcleo en lugar del nivel usermode. Por lo tanto, usted será capaz de filtrar los paquetes mucho más eficiente y captura bajo cargas más grandes en la red.

En .NET, a los paquetes de filtro, que había necesidad de proporcionar su propio esquema de filtrado de paquetes de capa de aplicación que sería mucho menos eficiente.

Windows bloquea el acceso a los protocolos no estándar para 'razones de seguridad' de modo que en realidad no apoyan el uso de paquetes prima para la creación de redes (a pesar de que el código puede existir para que sea posible). paquetes RAW siempre estaban destinados a investigar el diseño de nuevos protocolos, no uso general.

Por todos estos motivos, es generalmente una buena idea para recoger Winpcap y un envoltorio para un idioma específico para implementar cualquier tipo de captura de aplicación.

Nota: Yo personalmente prefiero SharpPcap, pero también estoy parcial, ya que hago el desarrollo del proyecto. Pcap.net es muy similar en su aplicación cuando se trata de la captura, que diverge sobre todo cuando se trata de cómo se analizan los paquetes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top