SharpPcap ya es capaz de capturar paquetes de la misma manera que wireshark (solo en código en lugar de GUI). Y puede analizarlos directamente o puede volcarlos en el disco en el formato de archivo .pcap común.
Los pasos de analizar una captura son:
- elegir una interfaz
- Abra una conexión en modo promiscuo
- iniciar la captura, ya sea usando un bucle while o un callback evento
- analizar el crudo paquete al tipo que desee
Si está leyendo archivos de volcado .pcap, el proceso es casi el mismo e xcepto que llame a un lector de captura fuera de línea, no necesita seleccionar una interfaz, y no necesita configurar el modo promiscuo. Todos los filtros estándar que wireshark, tcpdump y la mayoría de los demás marcos Pcap utilizan son compatibles con SharpPcap. Para una referencia a estos verifique el tcpdump man.
Actualmente no hay soporte para analizar HTTP directamente, pero el análisis de paquetes TCP es realmente sencillo.
Al recibir el paquete sin procesar (no analizada) hacer esto:
TCPPacket packet = TCPPacket.GetEncapsulated(rawPacket);
el paquete.El analizador de red (un componente separado e incluido de SharpPcap) es capaz de extraer directamente la porción de TCP incluso si la comunicación está encapsulada mediante VPN, PPoE o PPP.
Una vez que haya analizado el TCPPacket simplemente tome el paquete.PayloadBytes para la carga en una matriz de bytes que debe contener el encabezado HTTP en bytes sin procesar que se pueden convertir al formato de texto correcto (no estoy seguro de si cabeceras HTTP use codificación UTF-8 o ASCII en ese nivel). Debería haber muchas herramientas/librerías disponibles libremente para analizar los encabezados HTTP.
para extraer el paquete HTTP de TCP:
Usted necesita recoger los paquetes TCP de la conexión ya que vienen en y si se fragmenta los datos (mayor de 1500 bytes) que necesita para vuelva a ensamblar las partes en la memoria. Para descubrir qué partes van en qué orden, debe seguir cuidadosamente los números de secuencia/reconocimiento.
Esto no es algo trivial para lograr con SharpPcap porque estás trabajando con una parte mucho más baja de la pila y volviendo a ensamblar la conexión manualmente.
Wireshark tiene un interesante artículo sobre cómo lograr esto en C.
A partir de ahora, SharpPcap no soporta la carga útil TCP análisis.
Si lo que buscas es fácil de seguir ejemplos de cómo utilizar SharpPcap descargar el árbol de fuentes y observe el ejemplo proyectos incluidos. También hay un tutorial for SharpPcap on codeproject.
Si tiene más preguntas y/o desea realizar alguna solicitud de funciones al proyecto, siéntase libre de publicar en el proyecto de SourceForge. Está lejos de estar muerto y continúa en desarrollo activo.
Nota: Chris Morgan es el líder del proyecto y soy uno de los desarrolladores de SharpPcap/Packet.Net.
Actualización: El proyecto del tutorial sobre el proyecto de código está ahora actualizado para coincidir con la API actual.
'GetEncapsulated' es igual a' Packet.ParsePacket (e.Packet.LinkLayerType, e.Packet.Data); '¿correcto? – C4u