PcapPlusPlus es una biblioteca C++ multiplataforma para capturar, analizar y elaborar paquetes de red. Está diseñado para ser eficiente, potente y fácil de usar.
PcapPlusPlus permite capacidades de decodificación y falsificación para una gran variedad de protocolos de red. También proporciona contenedores C++ fáciles de usar para los motores de procesamiento de paquetes más populares, como libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP y PF_RING.
Tabla de contenido
Descargar
Página de lanzamiento de GitHub
cerveza casera
Vcpkg
Conan
Constrúyelo tú mismo
Verifica tus paquetes
Descripción general de funciones
Empezando
Documentación API
Soporte multiplataforma
Protocolos de red compatibles
Capa de enlace de datos (L2)
Capa de red (L3)
Capa de transporte (L4)
Capa de sesión (L5)
Capa de presentación (L6)
Capa de aplicación (L7)
Soporte DPDK y PF_RING
Puntos de referencia
Proporcionar comentarios
Contribuyendo
Licencia
Puede elegir entre descargar desde la página de lanzamiento de GitHub, usar un administrador de paquetes o crear PcapPlusPlus usted mismo. Para obtener más detalles, visite la página de descargas en el sitio web de PcapPlusPlus.
https://github.com/seladb/PcapPlusPlus/releases/latest
instalar cerveza pcapplusplus
Fórmulas caseras: https://formulae.brew.sh/formula/pcapplusplus
Ventanas:
.vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Puerto vcpkg: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
conan install "pcapplusplus/[>0]@" -u
El paquete en ConanCenter: https://conan.io/center/pcapplusplus
Clona el repositorio de git:
clon de git https://github.com/seladb/PcapPlusPlus.git
Siga las instrucciones de compilación según su plataforma en la página Construir desde fuente en el sitio web de PcapPlusPlus.
Las versiones de PcapPlusPlus posteriores a la v23.09 están firmadas con la certificación de GitHub. Todas las certificaciones se pueden encontrar aquí. Puede verificar la certificación de estos paquetes con GitHub CLI. Para verificar paquetes, puede seguir las instrucciones más recientes de gh attestation verificar. Para obtener instrucciones sencillas, puede utilizar el siguiente comando:
gh attestation verificar <ruta-al-paquete-archivo> --repository seladb/PcapPlusPlus
y deberías ver el siguiente resultado en tu terminal:
✓ ¡Verificación exitosa!
Captura de paquetes a través de un contenedor C++ fácil de usar para motores de captura de paquetes populares como libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, PF_RING de ntop y sockets sin formato [Más información]
Análisis y elaboración de paquetes, incluido el análisis detallado de protocolos y capas, generación y edición de paquetes para una gran variedad de protocolos de red [Más información]
Leer y escribir paquetes desde/hacia archivos en formatos PCAP y PCAPNG [Más información]
Procesamiento de paquetes a velocidad de línea a través de un contenedor C++ eficiente y fácil de usar para DPDK, eBPF AF_XDP y PF_RING [Más información]
Soporte multiplataforma : PcapPlusPlus es totalmente compatible con Linux, MacOS, Windows, Android y FreeBSD.
Reensamblaje de paquetes : implementación única de Reensamblaje de TCP que incluye retransmisión de TCP, paquetes TCP desordenados y datos TCP faltantes, y fragmentación y desfragmentación de IP para crear y reensamblar fragmentos de IPv4 e IPv6 [Más información]
Filtrado de paquetes que hace que los filtros BPF de libpcap sean mucho más fáciles de usar [Más información]
Huellas dactilares TLS : una implementación en C++ de huellas dactilares TLS JA3 y JA3S [Más información]
Escribir aplicaciones con PcapPlusPlus es muy fácil e intuitivo. Aquí hay una aplicación sencilla que muestra cómo leer un paquete de un archivo PCAP y analizarlo:
#include <iostream>#include "IPv4Layer.h"#include "Packet.h"#include "PcapFileDevice.h"int main(int argc, char* argv[]) {// abrir un archivo pcap para leerpcpp::PcapFileReaderDevice Reader("1_packet.pcap");if (!reader.open()) { std::cerr << "Error al abrir el archivo pcap" << std::endl;return 1; }// lee el primer (y único) paquete del archivo pcpp::RawPacket rawPacket;if (!reader.getNextPacket(rawPacket)) { std::cerr << "No se pudo leer el primer paquete del archivo" << std::endl;return 1; }// analiza el paquete sin procesar en un paquete analizadopcpp::Packet parsedPacket(&rawPacket);// verifica que el paquete sea IPv4if (parsedPacket.isPacketOfType(pcpp::IPv4)) {// extraer fuente y destino IPspcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address(); pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();// imprime origen y destino IPsstd::cout << "La IP de origen es '" << srcIP << "'; Destino La IP es '" << destIP << "'" << std::endl; }// cerrar el lector de archivos.close();return 0; }
Puede encontrar mucha más información en la página de introducción del sitio web de PcapPlusPlus. Esta página lo guiará a través de algunos pasos sencillos para tener una aplicación en funcionamiento.
PcapPlusPlus consta de 3 bibliotecas:
Packet++ : una biblioteca para analizar, crear y editar paquetes de red
Pcap++ : una biblioteca para interceptar y enviar paquetes, proporcionar información de red y NIC, estadísticas, etc. En realidad, es un contenedor de C++ para motores de captura de paquetes como libpcap, WinPcap, Npcap, DPDK y PF_RING.
Common++ : una biblioteca con algunas utilidades de código comunes utilizadas tanto por Packet++ como por Pcap++
Puede encontrar una documentación API extensa en la sección de documentación API en el sitio web de PcapPlusPlus. Si ve algún dato faltante por favor contáctenos.
PcapPlusPlus actualmente es compatible con Windows
PcapPlusPlus actualmente admite el análisis, edición y creación de paquetes de los siguientes protocolos:
EthernetII
Ethernet IEEE 802.3
LLC (solo se admite BPDU)
Nulo/bucle invertido
Avance de paquete (también conocido como pie de página o relleno)
PPPoE
SLL (captura cocinada de Linux)
SLL2 (captura cocinada de Linux v2)
STP
VLAN
VXLAN
Activación en LAN (WoL)
NFLOG (Linux Netfilter NFLOG): solo análisis (sin capacidades de edición)
ARP
GRE
ICMP
ICMPv6
IGMP (se admiten IGMPv1, IGMPv2 e IGMPv3)
IPv4
IPv6
MPLS
PND
IP sin formato (IPv4 e IPv6)
VRRP (IPv4 e IPv6)
AlambreGuardia
COTP
GTP (v1)
IPSec AH y ESP: solo análisis (sin capacidades de edición)
tcp
TPKT
UDP
partido socialdemócrata
SORBO
SSL/TLS: solo análisis (sin capacidades de edición)
Decodificador y codificador ASN.1
BGP (v4)
DHCP
DHCPv6
DNS
ftp
Encabezados HTTP (solicitud y respuesta)
LDAP
NTP (v3, v4)
Radio
Comunicación S7 (S7comm)
SMTP
ALGUNOS/IP
SSH: solo análisis (sin capacidades de edición)
Telnet: solo análisis (sin capacidades de edición)
Carga útil genérica
El kit de desarrollo de plano de datos (DPDK) es un conjunto de bibliotecas de plano de datos y controladores de controlador de interfaz de red para un procesamiento rápido de paquetes.
PF_RING™ es un nuevo tipo de socket de red que mejora drásticamente la velocidad de captura de paquetes.
Ambos marcos proporcionan un procesamiento de paquetes muy rápido (hasta la velocidad de la línea) y se utilizan en muchas aplicaciones de red, como enrutadores, firewalls, equilibradores de carga, etc. PcapPlusPLus proporciona una capa de abstracción de C++ sobre DPDK y PF_RING. Esta capa de abstracción proporciona una interfaz fácil de usar que elimina gran parte del texto estándar involucrado en el uso de estos marcos. Puede obtener más información visitando las páginas de soporte de DPDK y PF_RING en el sitio web de PcapPlusPlus.
Usamos el proyecto de puntos de referencia de captura de paquetes de Matias Fontanini para comparar el rendimiento de PcapPlusPlus con otras bibliotecas de C++ similares (como libtins
y libcrafter
).
Puede ver los resultados en la página de puntos de referencia en el sitio web de PcapPlusPlus.
Estaremos más que felices de recibir comentarios; no dude en comunicarse con nosotros de cualquiera de las siguientes maneras:
Abrir un ticket de GitHub
Publique un mensaje en el grupo de Google PcapPlusPlus: https://groups.google.com/d/forum/pcapplusplus-support
Haga una pregunta sobre Stack Overflow: https://stackoverflow.com/questions/tagged/pcapplusplus
Envíe un correo electrónico a: [email protected]
Síguenos en X: https://x.com/seladb
Si te gusta este proyecto , ponnos una estrella en GitHub: ¡ayuda! ⭐ ⭐
Visite el sitio web de PcapPlusPlus para obtener más información.
Agradeceríamos mucho cualquier contribución a este proyecto. Si está interesado en contribuir, visite la página de contribuciones en el sitio web de PcapPlusPlus.
PcapPlusPlus se publica bajo la licencia sin licencia.