Biblioteca C++ multiplataforma para captura, análisis, creación y procesamiento de paquetes de red de alto rendimiento. Compatible con libpcap, DPDK, AF_XDP, PF_RING, e incluye reensamblado TCP, huellas dactilares TLS y decodificación de protocolos.
PcapPlusPlus es una biblioteca C++ multiplataforma para la captura, análisis y creación de paquetes de red. Está diseñada para ser eficiente, potente y fácil de usar.
PcapPlusPlus permite capacidades de decodificación y forjado para una gran variedad de protocolos de red. También proporciona envoltorios C++ fáciles de usar para los motores de procesamiento de paquetes más populares, como libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert y PF_RING.
Puedes elegir entre descargar desde la página de publicaciones de GitHub, usar un gestor de paquetes o compilar PcapPlusPlus tú mismo. Para más detalles, visita la página de Descarga en el sitio web de PcapPlusPlus.
brew install pcapplusplus
Fórmula de Homebrew: https://formulae.brew.sh/formula/pcapplusplus
Windows:
.\vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Puerto de 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:
git clone https://github.com/seladb/PcapPlusPlus.git
Sigue las instrucciones de compilación según tu plataforma en la página Compilar desde Fuente del sitio web de PcapPlusPlus.
Las versiones de PcapPlusPlus posteriores a v23.09 están firmadas con atestación de GitHub. Todas las atestaciones se pueden encontrar aquí. Puedes verificar la atestación de estos paquetes con GitHub CLI. Para verificar paquetes, puedes seguir las instrucciones más recientes de gh attestation verify. Para instrucciones simples, puedes usar el siguiente comando:
gh attestation verify <path-to-package-file> --repository seladb/PcapPlusPlus
y deberías ver la siguiente salida en tu terminal:
✓ Verification succeeded!
Escribir aplicaciones con PcapPlusPlus es muy fácil e intuitivo. Aquí hay una aplicación simple 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[])
{
// open a pcap file for reading
pcpp::PcapFileReaderDevice reader("1_packet.pcap");
if (!reader.open())
{
std::cerr << "Error opening the pcap file" << std::endl;
return 1;
}
// read the first (and only) packet from the file
pcpp::RawPacket rawPacket;
if (!reader.getNextPacket(rawPacket))
{
std::cerr << "Couldn't read the first packet in the file" << std::endl;
return 1;
}
// parse the raw packet into a parsed packet
pcpp::Packet parsedPacket(&rawPacket);
// verify the packet is IPv4
if (parsedPacket.isPacketOfType(pcpp::IPv4))
{
// extract source and dest IPs
pcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address();
pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();
// print source and dest IPs
std::cout << "Source IP is '" << srcIP << "'; Dest IP is '" << destIP << "'" << std::endl;
}
// close the file
reader.close();
return 0;
}
Puedes encontrar mucha más información en la página Primeros Pasos del sitio web de PcapPlusPlus. Esta página te guiará a través de unos sencillos pasos para tener una aplicación funcionando.
PcapPlusPlus consta de 3 bibliotecas:
Puedes encontrar una documentación extensa de la API en la sección de documentación de la API del sitio web de PcapPlusPlus. Si ves algún dato faltante, por favor contáctanos.
PcapPlusPlus actualmente es compatible con
Windows
PcapPlusPlus actualmente soporta el análisis, edición y creación de paquetes de los siguientes protocolos:
El Kit de Desarrollo del Plano de Datos (DPDK) es un conjunto de bibliotecas del plano de datos y controladores de interfaz de controlador de red para el 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 de trabajo proporcionan un procesamiento de paquetes muy rápido (hasta velocidad de línea) y se utilizan en muchas aplicaciones de red como enrutadores, cortafuegos, balanceadores de carga, etc. PcapPlusPLus proporciona una capa de abstracción en C++ sobre DPDK y PF_RING. Esta capa de abstracción ofrece una interfaz fácil de usar que elimina gran parte del trabajo repetitivo involucrado en el uso de estos marcos. Puedes 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 packet-capture-benchmarks de Matias Fontanini para comparar el rendimiento de PcapPlusPlus con otras bibliotecas C++ similares (como libtins y libcrafter).
Puedes ver los resultados en la página Benchmarks del sitio web de PcapPlusPlus.
Estaremos más que encantados de recibir retroalimentación. No dudes en contactarnos de cualquiera de las siguientes maneras:
Si te gusta este proyecto, por favor danos una estrella en GitHub — ¡ayuda! ⭐ ⭐
Por favor, visita el sitio web de PcapPlusPlus para obtener más información.
Agradeceríamos mucho cualquier contribución a este proyecto. Si estás interesado en contribuir, visita la página de contribución en el sitio web de PcapPlusPlus.
PcapPlusPlus se publica bajo la licencia Unlicense.