Pcap Binary Options
Sintaxis de la expresión de filtro Manual del usuario de WinPcap Nota: este documento se ha extraído de la página de manual de tcpdump. La versión original se puede encontrar en tcpdump. org. Los filtros wpcap se basan en una sintaxis declarativa del predicado. Un filtro es una cadena ASCII que contiene una expresión de filtrado. Pcapcompile () toma la expresión y la traduce en un programa para el filtro de paquetes a nivel de kernel. La expresión selecciona qué paquetes se descargan. Si no se da ninguna expresión, todos los paquetes en la red serán aceptados por el motor de filtrado a nivel de kernel. De lo contrario, sólo se aceptarán los paquetes cuya expresión sea verdadera. La expresión consiste en una o más primitivas. Los primitivos generalmente consisten en un id (nombre o número) precedido por uno o más calificadores. Hay tres tipos diferentes de calificador: los calificadores de tipo dicen qué tipo de cosa se refiere el nombre o el número de identificación. Los tipos posibles son host. Red y puerto. P. ej. Host foo, net 128.3, port 20. Si no hay un calificador de tipo, se supone que el host. Los calificadores de dir especifican una dirección de transferencia particular hacia y / o desde id. Las direcciones posibles son src. Dst. Src o dst y src y dst. P. ej. Src foo, dst net 128.3, puerto src o dst ftp-data. Si no hay ningún calificador dir, se supone src o dst. Para las capas de enlace nulo (es decir, los protocolos punto a punto, como el resbalón), los calificadores entrantes y salientes se pueden utilizar para especificar una dirección deseada. Proto calificadores restringir el partido a un protocolo en particular. Posibles protos son: éter. Fddi Tr. Ip Ip6. Arp. Rarp Decnet Tcp y udp. P. ej. Ether src foo, arp net 128.3, tcp puerto 21. Si no hay ningún proto calificador, se asumen todos los protocolos consistentes con el tipo. P. ej. Src foo significa (ip o arp o rarp) src foo (excepto el último no es sintaxis legal), net bar significa (ip o arp o rarp) net bar y puerto 53 significa (tcp o udp) puerto 53. fddi es en realidad un Alias para ether el analizador los trata de forma idéntica como significando el nivel de enlace de datos usado en la interfaz de red especificada. Los encabezados FDDI contienen direcciones de origen y de destino similares a Ethernet, ya menudo contienen tipos de paquetes similares a Ethernet, por lo que se puede filtrar en estos campos FDDI igual que con los campos Ethernet análogos. Los encabezados FDDI también contienen otros campos, pero no se pueden nombrar explícitamente en una expresión de filtro. Del mismo modo, tr es un alias para ether los párrafos anteriores las declaraciones sobre los encabezados FDDI también se aplican a los encabezados Token Ring. Además de lo anterior, hay algunas palabras clave primitivas especiales que no siguen el patrón: puerta de enlace. emisión . Menos . Expresiones mayores y aritméticas. Todos estos se describen a continuación. Se crean expresiones de filtro más complejas utilizando las palabras y. O y no para combinar primitivas. P. ej. Host foo y no puerto ftp y no puerto ftp-data. Para guardar la escritura, se pueden omitir las listas de calificaciones idénticas. P. ej. Tcp dst puerto ftp o ftp-data o dominio es exactamente igual que tcp dst puerto ftp o tcp dst puerto ftp-data o tcp dst puerto dominio. Las primitivas permitidas son: dst host host Verdadero si el campo de destino IPv4 / v6 del paquete es host. Que puede ser una dirección o un nombre. Src host host Verdadero si el campo fuente IPv4 / v6 del paquete es host. Host host Verdadero si la fuente o destino IPv4 / v6 del paquete es host. Cualquiera de las expresiones de host anteriores se puede añadir con las palabras clave, ip. Arp. Rarp O ip6 como en: que es equivalente a: Si host es un nombre con varias direcciones IP, cada dirección se verificará para una coincidencia. Ether dst ehost True si la dirección de destino de Ethernet es ehost. Ehost puede ser un nombre de / etc / éthers o un número (ver éteres (3N) para el formato numérico). Ether src ehost True si la dirección de origen de ethernet es ehost. Ether host ehost True si la dirección ethernet o la dirección de destino es ehost. Host de puerta de enlace Verdadero si el paquete utilizó el host como puerta de enlace. Es decir. La dirección de origen o de destino de Ethernet era host pero ni la fuente de IP ni el destino de IP era host. El host debe ser un nombre y debe encontrarse tanto en los mecanismos de resolución de nombre de host-nombre-IP (archivo de nombre de host, DNS, NIS, etc.) como en la resolución de direcciones host-name-to-Ethernet Mecanismo (/ etc / éteres, etc.). (Una expresión equivalente es la que se puede usar con nombres o números para host / ehost.) Esta sintaxis no funciona en la configuración habilitada para IPv6 en este momento. Dst net net True si la dirección de destino IPv4 / v6 del paquete tiene un número de red de red. Net puede ser un nombre de / etc / networks o un número de red (vea las redes (4) para más detalles). Src net net Verdadero si la dirección de origen IPv4 / v6 del paquete tiene un número de red de red. Net net True si la dirección IPv4 / v6 o la dirección de destino del paquete tiene un número de red de red. Net net mask netmask True si la dirección IP coincide con net con la máscara de red específica. Puede calificarse con src o dst. Tenga en cuenta que esta sintaxis no es válida para IPv6 net. Net net / len Verdadero si la dirección IPv4 / v6 coincide con net con una netmask len bits de ancho. Puede calificarse con src o dst. Puerto de puerto dst True si el paquete es ip / tcp, ip / udp, ip6 / tcp o ip6 / udp y tiene un valor de puerto de destino del puerto. El puerto puede ser un número o un nombre utilizado en / etc / services (ver tcp (4P) y udp (4P)). Si se utiliza un nombre, se comprueban tanto el número de puerto como el protocolo. Si se utiliza un número o un nombre ambiguo, sólo se verifica el número de puerto (por ejemplo, el puerto dst 513 imprimirá tanto tráfico tcp / login como udp / who, y el dominio de puerto imprimirá tráfico tcp / domain y udp / domain). Puerto de puerto src Verdadero si el paquete tiene un valor de puerto de origen del puerto. Puerto de puerto Verdadero si el puerto de origen o de destino del paquete es puerto. Cualquiera de las expresiones de los puertos anteriores se pueden añadir con las palabras clave, tcp o udp. Como en: que sólo coincide con paquetes tcp cuyo puerto de origen es puerto. Menos longitud Verdadero si el paquete tiene una longitud menor o igual a la longitud. Esto es equivalente a: mayor longitud True si el paquete tiene una longitud mayor o igual a la longitud. Esto es equivalente a: Protocolo IP proto Verdadero si el paquete es un paquete IP (véase ip (4P)) del protocolo de tipo de protocolo. El protocolo puede ser un número o uno de los nombres icmp. Icmp6. Igmp. Igrp. Pim Ah Esp. Vrrp. Udp. O tcp. Tenga en cuenta que los identificadores tcp. Udp. Y icmp son también palabras clave y deben ser escapados a través de barra invertida (), que está en la C-shell. Tenga en cuenta que esta primitiva no persigue la cadena de encabezado del protocolo. Ip6 proto protocolo Verdadero si el paquete es un paquete IPv6 del protocolo de tipo de protocolo. Tenga en cuenta que esta primitiva no persigue la cadena de encabezado del protocolo. Protochain protocolo ip6 Verdadero si el paquete es paquete IPv6, y contiene el encabezado del protocolo con el protocolo de tipo en su cadena de encabezado del protocolo. Por ejemplo, coincide con cualquier paquete IPv6 con el encabezado del protocolo TCP en la cadena de encabezado del protocolo. El paquete puede contener, por ejemplo, encabezado de autenticación, encabezado de enrutamiento o encabezado de opción salto por salto, entre encabezado IPv6 y encabezado TCP. El código BPF emitido por esta primitiva es complejo y no puede ser optimizado por el código BPF optimizador en tcpdump. Así que esto puede ser algo lento. Protocolo ip protochain Equivalente al protocolo protochain ip6. Pero esto es para IPv4. Ether broadcast True si el paquete es un paquete de difusión Ethernet. La palabra clave ether es opcional. Ip broadcast True si el paquete es un paquete de difusión IP. Comprueba tanto las convenciones de difusión de todos los ceros como las de todos, y busca la máscara de subred local. Ether multicast Verdadero si el paquete es un paquete de multidifusión ethernet. La palabra clave ether es opcional. Esta es la abreviatura de ether0 amp 1 0. Ip multicast Verdadero si el paquete es un paquete de multidifusión IP. Ip6 multicast Verdadero si el paquete es un paquete de multidifusión IPv6. Ether proto protocolo Verdadero si el paquete es de tipo éter protocolo. El protocolo puede ser un número o uno de los nombres ip. Ip6. Arp. Rarp una charla . Aarp. Decnet Sca Lat. Mopdl. Moprc Iso Stp Ipx O netbeui. Tenga en cuenta que estos identificadores también son palabras clave y deben escaparse a través de barra invertida (). En el caso de la FDDI (por ejemplo, el protocolo fddi arp) y Token Ring (por ejemplo, tr protocol arp), para la mayoría de esos protocolos, la identificación del protocolo procede del encabezado 802.2 Logical Link Control (LLC) FDDI o encabezado Token Ring. Al filtrar para la mayoría de los identificadores de protocolo en FDDI o Token Ring, tcpdump comprueba sólo el campo ID de protocolo de un encabezado LLC en el formato SNAP con un identificador de unidad organizacional (OUI) de 0x000000, para Ethernet encapsulada no comprueba si el paquete es En formato SNAP con un OUI de 0x000000. Las excepciones son iso. Para lo cual comprueba los campos DSAP (punto de acceso de servicio de destino) y SSAP (punto de acceso de servicio de origen) de la cabecera LLC, stp y netbeui. Donde se comprueba el DSAP de la cabecera LLC, y atalk. Donde comprueba un paquete de formato SNAP con un OUI de 0x080007 y el etype de Appletalk. En el caso de Ethernet, tcpdump comprueba el campo de tipo Ethernet para la mayoría de esos protocolos, las excepciones son iso. Savia Y netbeui. Para lo cual comprueba una trama 802.3 y luego comprueba la cabecera LLC como lo hace para FDDI y Token Ring, atalk. Donde comprueba tanto para el etype de Appletalk en una trama Ethernet como para un paquete de formato SNAP como lo hace para FDDI y Token Ring, aarp. Donde comprueba el ETP de Appletalk ARP en una trama Ethernet o un marco SNAP 802.2 con una OUI de 0x000000 e ipx. Donde comprueba el etype IPX en una trama Ethernet, el IPX DSAP en el encabezado LLC, el 802.3 sin encapsulación de cabecera LLC de IPX y el IPX etype en un marco SNAP. Decnet src host Verdadero si la dirección de origen DECNET es host. Que puede ser una dirección del formulario 10.123, o un nombre de host DECNET. El soporte de nombre de host DECNET sólo está disponible en los sistemas Ultrix que están configurados para ejecutar DECNET. Decnet dst host Verdadero si la dirección de destino DECNET es host. Decnet host host Verdadero si la fuente DECNET o la dirección de destino es host. Ip Ip6. Arp. Rarp una charla . Aarp. Decnet Iso Stp Ipx Netbeui Abreviaturas para: donde p es uno de los protocolos anteriores. Lat. Moprc Mopdl Abreviaturas para: donde p es uno de los protocolos anteriores. Tenga en cuenta que tcpdump actualmente no sabe cómo analizar estos protocolos. Vlan vlanid Verdadero si el paquete es un paquete IEEE 802.1Q VLAN. Si se especifica vlanid, sólo es true si el paquete tiene el vlanid especificado. Tenga en cuenta que la primera palabra clave vlan encontrada en la expresión cambia los desplazamientos de decodificación para el resto de la expresión en la suposición de que el paquete es un paquete de VLAN. Tcp. Udp. Icmp Abreviaturas para: donde p es uno de los protocolos anteriores. Iso proto protocolo Verdadero si el paquete es un paquete OSI del protocolo de tipo de protocolo. El protocolo puede ser un número o uno de los nombres clnp. Esis O isis. Clnp. Esis Isis Abreviaturas para: donde p es uno de los protocolos anteriores. Tenga en cuenta que tcpdump realiza un trabajo incompleto de analizar estos protocolos. Expr relop expr Verdadero si la relación se mantiene, donde relop es uno de gt, lt, gt, lt,. , Y expr es una expresión aritmética compuesta por constantes enteras (expresadas en la sintaxis C estándar), los operadores binarios normales, -,, /, amp, un operador de longitud y los accesores especiales de datos por paquetes. Para acceder a los datos dentro del paquete, utilice la siguiente sintaxis: Proto es uno de éter, fddi, tr, ip, arp, rarp, tcp, udp, icmp o ip6. E indica la capa de protocolo para la operación de índice. Tenga en cuenta que tcp, udp y otros tipos de protocolo de capa superior sólo se aplican a IPv4, no IPv6 (esto se fijará en el futuro). El desplazamiento de bytes, con relación a la capa de protocolo indicada, viene dado por expr. El tamaño es opcional e indica el número de bytes en el campo de interés que puede ser uno, dos o cuatro y el valor predeterminado es uno. El operador longitud, indicado por la palabra clave len. Da la longitud del paquete. Por ejemplo, ether0 amp 1 0 captura todo el tráfico de multidifusión. La expresión ip0 amp 0xf 5 captura todos los paquetes IP con opciones. La expresión ip6: 2 amp 0x1fff 0 captura sólo datagramas no fragmentados y frag cero de datagramas fragmentados. Esta comprobación se aplica implícitamente a las operaciones de índice tcp y udp. Por ejemplo, tcp0 siempre significa el primer byte del encabezado TCP. Y nunca significa el primer byte de un fragmento intermedio. Algunos desplazamientos y valores de campo se pueden expresar como nombres en lugar de como valores numéricos. Los siguientes offsets de campo de encabezado de protocolo están disponibles: icmptype (campo de tipo ICMP), icmpcode (campo de código ICMP) y tcpflags (campo de indicadores TCP). Los siguientes valores de campo de tipo ICMP están disponibles: icmp-echoreply. Icmp-unreach. Icmp-fuentequench. Icmp-redirect. Icmp-echo. Icmp-routeradvert. Icmp-routersolicit. Icmp-timxceed. Icmp-paramprob. Icmp-tstamp. Icmp-tstampreply. Icmp-ireq. Icmp-ireqreply. Icmp-maskreq. Icmp-maskreply. Los siguientes valores de campo de indicadores TCP están disponibles: tcp-fin. Tcp-syn. Tcp-rst. Tcp-push. Tcp-push. Tcp-ack. Tcp-urg. Las primitivas se pueden combinar usando: Un grupo entre paréntesis de primitivas y operadores (los paréntesis son especiales para el Shell y deben escaparse). Negación (o no). Concatenación (ampamp o or). Alternancia (o o). La negación tiene la más alta precedencia. La alternancia y la concatenación tienen igual precedencia y se asocian de izquierda a derecha. Tenga en cuenta que para la concatenación se requieren ahora símbolos explícitos y no yuxtaposición. Si se da un identificador sin una palabra clave, se supone la palabra clave más reciente. Por ejemplo, es corto para que no se debe confundir con los argumentos de expresión se pueden pasar a tcpdump como un solo argumento o como múltiples argumentos, lo que sea más conveniente. Generalmente, si la expresión contiene metacaracteres de Shell, es más fácil pasarla como un solo argumento entre comillas. Múltiples argumentos se concatenan con espacios antes de ser analizados. Estoy tratando de averiguar la sintaxis correcta del comando. Tengo un archivo pcap, y quiero usar grep, y grep sólo para sacar todas las direcciones IP uniq de sin el archivo Así que suponiendo que el archivo se llama captura. pcap y está en mi carpeta de inicio, ¿qué debo escribir I Asumir que el regex puede ser d. d.d. d y ese tipo y uniq debe ser incluido también, pero parece que el pcap no responde bien con grep, por ejemplo, utilizando la sintaxis normal de grep file no funciona, si ejecuto: Grep 239 ./capture. pcap Obtengo el archivo binario de repetición ./capture/pcap coincide con los buscados Dec 15 13 at 20:02 Mira el indicador - o para grep y ordena - u en lugar de uniq (que solo funciona en pre-ordenado datos). También por favor vea el comentario de psusi - No trabajo don39t con archivos pcap, por lo que don39t saber si esto realmente hace lo que necesita, Acabo de añadirlo para ilustrar genéricamente cómo obtener grep para trabajar con archivos binarios. Ndash steeldriver Dec 16 13 at 14:29 grep trabaja en el texto, el archivo. pcap es un archivo binario, lo que significa usar grep sólo que no puede hacer lo que quieras. El formato de archivo. pcap Con el uso de grep sólo podría encontrar los IP-s en el archivo. pcap, que están en la sección de datos de paquete. (Por ejemplo, el archivo de captura contiene los paquetes de una descarga de página web, donde la página web es sobre IP-s) Así que para ser corto, utilizando grep sólo no puede hacer eso. Pero ¿por qué tienes que usar sólo grep ¿Es esto algún tipo de tarea (he respondido una pregunta muy similar hace 3 días. Usar WinPcap en sus programas WinPcap manual del usuario Creación de una aplicación que utiliza wpcap. dll Para crear una aplicación que utiliza wpcap. Dll con Microsoft Visual C, siga estos pasos: Incluya el archivo pcap. h al principio de cada archivo de origen que utiliza las funciones exportadas por biblioteca Si su programa utiliza Win32 funciones específicas de WinPcap, recuerde incluir WPCAP entre las definiciones de preprocesador. Si su programa utiliza las capacidades de captura remota de WinPcap, agregue HAVEREMOTE entre las definiciones de preprocesador. No incluya remote-ext. h directamente en sus archivos de origen. Configure las opciones del vinculador para incluir el archivo de biblioteca wpcap. lib wpcap. lib Puede encontrarse en el paquete de desarrolladores de WinPcap Establezca las opciones del vinculador para incluir el archivo ws232.lib de biblioteca de winsock Este archivo se distribuye con el compilador C y contiene las funciones de socket para Windows. Muestras en el tutorial. Para agregar una definición de preprocesador, debe seleccionar Configuración en el menú Proyecto, luego seleccionar C / C en el control de pestaña y en la categoría General. Debe agregar la definición en el cuadro de texto Preprocessor Definitions. Para agregar una nueva biblioteca al proyecto con Microsoft Visual C 6.0, debe seleccionar Configuración en el menú Proyecto, a continuación, seleccione Vincular en el control de ficha y, a continuación, agregue el nombre de la nueva biblioteca en el cuadro de edición de módulos de objeto / biblioteca. Para agregar una nueva ruta de acceso donde Microsoft Visual C 6.0 buscará las bibliotecas, debe seleccionar Opciones en el menú Herramientas, Directorios del control de ficha, Archivos de biblioteca del directorio Mostrar directorios para el cuadro combinado y agregar la ruta en los directorios caja. Para agregar una nueva ruta de acceso donde Microsoft Visual C 6.0 buscará archivos de inclusión, debe seleccionar Opciones en el menú Herramientas, luego Directorios del control de ficha, Incluir archivos en el cuadro combinado Mostrar directorios y agregar la ruta en los directorios caja. Programas de ejemplo Se proporcionan un par de programas de ejemplo para mostrar el uso de la API de WinPcap. El origen de los ejemplos, junto con todos los archivos necesarios para compilarlos y ejecutarlos, se pueden encontrar en el paquete de desarrolladores. Para fines didácticos aquí se proporciona una versión navegable del código: es posible hacer clic en las variables y funciones para saltar la documentación de cada uno de ellos. Para obtener un conjunto más completo de muestras, pruebe la sección de tutoriales de WinPcap. Packet Dump Este programa lee paquetes de un archivo o un adaptador de red, dependiendo de un conmutador de línea de comandos. Si no se proporciona una fuente, el programa muestra una lista de adaptadores disponibles, uno de los cuales se puede seleccionar. Una vez iniciada la captura, el programa imprime la marca de tiempo, la longitud y el contenido en bruto de los paquetes. Una vez compilado, se ejecutará en todas las plataformas Win32. Puede ser compilado para funcionar en Unix también (el makefile se proporciona). Filtro de paquetes Este es un ejemplo más completo del uso de libpcap. Muestra, entre otras cosas, cómo crear y establecer filtros y cómo guardar una captura en disco. Puede ser compilado bajo Win32 o Unix (los proyectos y makefiles se proporcionan). Pcapfilter (pf. exe) es una aplicación de filtrado de paquetes de propósito general: sus parámetros de entrada son una fuente de paquetes (puede ser una interfaz física o un archivo), un filtro y un archivo de salida. Toma paquetes de la fuente hasta que se presiona CTRLC o se procesa todo el archivo, aplica el filtro a los paquetes entrantes y los guarda en el archivo de salida si satisfacen el filtro. Pcapfilter se puede utilizar para volcar datos de red de acuerdo con un filtro en particular, sino también para extraer un conjunto de paquetes de un archivo previamente guardado. El formato de los archivos de entrada y salida es el formato utilizado por libpcap, es decir, el mismo de WinDump, tcpdump y muchas otras herramientas de red.
Comments
Post a Comment