
PcapPlusPlus v26.07
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.
Traducciones: English · 正體中文 · 한국어 · 日本語 · Русский
Tabla de Contenidos
- Tabla de Contenidos
- Descarga
- Resumen de Funcionalidades
- Primeros Pasos
- Documentación de la API
- Soporte Multiplataforma
- Protocolos de Red Soportados
- Soporte para DPDK y PF_RING
- Benchmarks
- Proporcionar Retroalimentación
- Contribuir
- Licencia
Descarga
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.
Página de Publicaciones de GitHub
https://github.com/seladb/PcapPlusPlus/releases/latest
Homebrew
brew install pcapplusplus
Fórmula de Homebrew: https://formulae.brew.sh/formula/pcapplusplus
Vcpkg
Windows:
.\vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Puerto de Vcpkg: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
Conan
conan install "pcapplusplus/[>0]@" -u
El paquete en ConanCenter: https://conan.io/center/pcapplusplus
Compilarlo Tú Mismo
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.
Verificar tus Paquetes
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!
Resumen de Funcionalidades
- Captura de paquetes a través de un envoltorio C++ fácil de usar para motores de captura de paquetes populares como libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, WinDivert, PF_RING de ntop y raw sockets [Más información]
- Análisis y creación de paquetes que incluye análisis detallado de protocolos y capas, generación de paquetes y edición de paquetes para una gran variedad de protocolos de red [Más información]
- Lectura y escritura de 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 envoltorio 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
- Reensamblado de paquetes - implementación única de Reensamblado TCP que incluye retransmisión TCP, paquetes TCP fuera de orden y datos TCP faltantes, y Fragmentación y Desfragmentación IP para crear y reensamblar fragmentos IPv4 e IPv6 [Más información]
- Filtrado de paquetes que hace que los filtros BPF de libpcap sean mucho más amigables [Más información]
- Huella digital TLS - una implementación en C++ de la huella digital JA3 y JA3S [Más información]
Primeros Pasos
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.
Documentación de la API
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. Es en realidad un envoltorio C++ para motores de captura de paquetes como libpcap, WinPcap, Npcap, DPDK, AF_XDP, WinDivert y PF_RING
- Common++ - una biblioteca con utilidades de código común utilizadas tanto por Packet++ como por Pcap++
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.
Soporte Multiplataforma
PcapPlusPlus actualmente es compatible con
Windows
Protocolos de Red Soportados
PcapPlusPlus actualmente soporta el análisis, edición y creación de paquetes de los siguientes protocolos:
Capa de Enlace de Datos (L2)
- Cisco HDLC
- Ethernet II
- IEEE 802.3 Ethernet
- LLC (solo compatible con BPDU)
- Null/Loopback
- Tráiler de paquete (también conocido como footer o relleno)
- PPPoE
- SLL (Linux cooked capture)
- SLL2 (Linux cooked capture v2)
- STP
- VLAN
- VXLAN
- Wake on LAN (WoL)
- NFLOG (Linux Netfilter NFLOG) - solo análisis (sin capacidades de edición)
Capa de Red (L3)
- ARP
- GRE
- ICMP
- ICMPv6
- IGMP (se admiten IGMPv1, IGMPv2 e IGMPv3)
- IPv4
- IPv6
- MPLS
- NDP
- Raw IP (IPv4 e IPv6)
- VRRP (IPv4 e IPv6)
- WireGuard
Capa de Transporte (L4)
- COTP
- GTP (v1 y v2)
- IPSec AH y ESP - solo análisis (sin capacidades de edición)
- TCP
- TPKT
- UDP
Capa de Sesión (L5)
- SDP
- SIP
Capa de Presentación (L6)
- SSL/TLS - solo análisis (sin capacidades de edición)
Capa de Aplicación (L7)
- Decodificador y codificador ASN.1
- BGP (v4)
- Decodificadores de claves criptográficas
- DHCP
- DHCPv6
- DNS
- DoIP
- FTP
- Cabeceras HTTP (solicitud y respuesta)
- LDAP
- Modbus
- MySQL - solo análisis (sin capacidades de edición)
- NTP (v3, v4)
- Decodificador y codificador PEM
- Protocolo Wire de PostgreSQL (PGWire) - solo análisis (sin capacidades de edición)
- Radius
- Comunicación S7 (S7comm)
- SMTP
- SOME/IP
- SSH - solo análisis (sin capacidades de edición)
- Telnet - solo análisis (sin capacidades de edición)
- Certificados X509 - solo análisis (sin capacidades de edición)
- Carga útil genérica
Soporte para DPDK y PF_RING
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.
Benchmarks
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.
Proporcionar Retroalimentación
Estaremos más que encantados de recibir retroalimentación. No dudes en contactarnos de cualquiera de las siguientes maneras:
- Abre un ticket en GitHub
- Publica un mensaje en el grupo de Google de PcapPlusPlus: https://groups.google.com/d/forum/pcapplusplus-support
- Haz una pregunta en Stack Overflow: https://stackoverflow.com/questions/tagged/pcapplusplus
- Envía un correo electrónico a: [email protected]
- Síguenos en X: https://x.com/seladb
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.
Contribuir
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.
Licencia
PcapPlusPlus se publica bajo la licencia Unlicense.
