
PcapPlusPlus v26.07
Biblioteca C++ multiplataforma para captura, análise, construção e parsing de pacotes de rede de alto desempenho. Suporta libpcap, DPDK, AF_XDP, PF_RING, e inclui remontagem TCP, fingerprinting TLS e decodificação de protocolos.
PcapPlusPlus é uma biblioteca C++ multiplataforma para captura, análise e criação de pacotes de rede. Foi projetada para ser eficiente, poderosa e fácil de usar.
O PcapPlusPlus permite capacidades de decodificação e forjamento para uma grande variedade de protocolos de rede. Também fornece wrappers C++ fáceis de usar para os motores de processamento de pacotes mais populares, como libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert e PF_RING.
Traduções: Inglês · 正體中文 · 한국어 · 日本語 · Русский
Table Of Contents
- Table Of Contents
- Download
- Feature Overview
- Getting Started
- API Documentation
- Multi Platform Support
- Supported Network Protocols
- DPDK And PF_RING Support
- Benchmarks
- Provide Feedback
- Contributing
- License
Download
Podes escolher entre descarregar da página de lançamento do GitHub, usar um gestor de pacotes ou compilar o PcapPlusPlus tu mesmo. Para mais detalhes, visita a página Download no site do PcapPlusPlus.
GitHub Release Page
https://github.com/seladb/PcapPlusPlus/releases/latest
Homebrew
brew install pcapplusplus
Homebrew formulae: https://formulae.brew.sh/formula/pcapplusplus
Vcpkg
Windows:
.\vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Vcpkg port: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
Conan
conan install "pcapplusplus/[>0]@" -u
O pacote no ConanCenter: https://conan.io/center/pcapplusplus
Build It Yourself
Clona o repositório git:
git clone https://github.com/seladb/PcapPlusPlus.git
Segue as instruções de compilação de acordo com a tua plataforma na página Build From Source no site do PcapPlusPlus.
Verify your packages
Lançamentos do PcapPlusPlus mais recentes que v23.09 são assinados com atestação do GitHub. Todas as atestações podem ser encontradas aqui. Podes verificar a atestação destes pacotes com a CLI do GitHub. Para verificar pacotes, podes seguir as instruções mais recentes de gh attestation verify. Para instruções simples, podes usar o seguinte comando:
gh attestation verify <caminho-para-o-arquivo-do-pacote> --repository seladb/PcapPlusPlus
e deves ver a seguinte saída no teu terminal:
✓ Verificação bem-sucedida!
Feature Overview
- Captura de pacotes através de um wrapper C++ fácil de usar para motores de captura de pacotes populares como libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, WinDivert, PF_RING da ntop e raw sockets [Saber mais]
- Análise e criação de pacotes incluindo análise detalhada de protocolos e camadas, geração de pacotes e edição de pacotes para uma grande variedade de protocolos de rede [Saber mais]
- Ler e escrever pacotes de/para ficheiros em formatos PCAP e PCAPNG [Saber mais]
- Processamento de pacotes à velocidade da linha através de um wrapper C++ eficiente e fácil de usar para DPDK, eBPF AF_XDP e PF_RING [Saber mais]
- Suporte multiplataforma - O PcapPlusPlus é totalmente suportado em Linux, MacOS, Windows, Android e FreeBSD
- Remontagem de pacotes - implementação única de Remontagem TCP que inclui retransmissão TCP, pacotes TCP fora de ordem e dados TCP em falta, e Fragmentação e Desfragmentação IP para criar e remontar fragmentos IPv4 e IPv6 [Saber mais]
- Filtragem de pacotes que torna os filtros BPF do libpcap muito mais amigáveis [Saber mais]
- Impressão digital TLS - uma implementação C++ da impressão digital TLS JA3 e JA3S [Saber mais]
Getting Started
Escrever aplicações com PcapPlusPlus é muito fácil e intuitivo. Aqui está uma aplicação simples que mostra como ler um pacote de um ficheiro PCAP e analisá-lo:
#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;
}
Podes encontrar muito mais informação na página Getting Started no site do PcapPlusPlus. Esta página guiar-te-á por alguns passos fáceis para teres uma aplicação a funcionar.
API Documentation
O PcapPlusPlus consiste em 3 bibliotecas:
- Packet++ - uma biblioteca para analisar, criar e editar pacotes de rede
- Pcap++ - uma biblioteca para intercetar e enviar pacotes, fornecendo informações de rede e NIC, estatísticas, etc. É na verdade um wrapper C++ para motores de captura de pacotes como libpcap, WinPcap, Npcap, DPDK, AF_XDP, WinDivert e PF_RING
- Common++ - uma biblioteca com algumas utilidades de código comum usadas tanto pela Packet++ como pela Pcap++
Podes encontrar uma documentação extensa da API na secção de documentação da API no site do PcapPlusPlus. Se vires algum dado em falta, por favor contacta-nos.
Multi Platform Support
O PcapPlusPlus é atualmente suportado em
Windows
Supported Network Protocols
O PcapPlusPlus suporta atualmente a análise, edição e criação de pacotes dos seguintes protocolos:
Data Link Layer (L2)
- Cisco HDLC
- Ethernet II
- IEEE 802.3 Ethernet
- LLC (Apenas BPDU suportado)
- Null/Loopback
- Packet trailer (também conhecido como footer ou padding)
- PPPoE
- SLL (Linux cooked capture)
- SLL2 (Linux cooked capture v2)
- STP
- VLAN
- VXLAN
- Wake on LAN (WoL)
- NFLOG (Linux Netfilter NFLOG) - apenas análise (sem capacidades de edição)
Network Layer (L3)
- ARP
- GRE
- ICMP
- ICMPv6
- IGMP (IGMPv1, IGMPv2 e IGMPv3 são suportados)
- IPv4
- IPv6
- MPLS
- NDP
- Raw IP (IPv4 e IPv6)
- VRRP (IPv4 e IPv6)
- WireGuard
Transport Layer (L4)
- COTP
- GTP (v1 e v2)
- IPSec AH e ESP - apenas análise (sem capacidades de edição)
- TCP
- TPKT
- UDP
Session Layer (L5)
- SDP
- SIP
Presentation Layer (L6)
- SSL/TLS - apenas análise (sem capacidades de edição)
Application Layer (L7)
- Decodificador e codificador ASN.1
- BGP (v4)
- Decodificadores de chave criptográfica
- DHCP
- DHCPv6
- DNS
- DoIP
- FTP
- Cabeçalhos HTTP (pedido e resposta)
- LDAP
- Modbus
- MySQL - apenas análise (sem capacidades de edição)
- NTP (v3, v4)
- Decodificador e codificador PEM
- PostgreSQL Wire Protocol (PGWire) - apenas análise (sem capacidades de edição)
- Radius
- S7 Communication (S7comm)
- SMTP
- SOME/IP
- SSH - apenas análise (sem capacidades de edição)
- Telnet - apenas análise (sem capacidades de edição)
- Certificados X509 - apenas análise (sem capacidades de edição)
- Payload genérico
DPDK And PF_RING Support
The Data Plane Development Kit (DPDK) é um conjunto de bibliotecas de plano de dados e controladores de interface de rede para processamento rápido de pacotes.
PF_RING™ é um novo tipo de socket de rede que melhora dramaticamente a velocidade de captura de pacotes.
Ambos os frameworks fornecem processamento muito rápido de pacotes (até à velocidade da linha) e são usados em muitas aplicações de rede, como routers, firewalls, balanceadores de carga, etc. O PcapPlusPLus fornece uma camada de abstração C++ sobre DPDK e PF_RING. Esta camada de abstração fornece uma interface fácil de usar que remove grande parte do trabalho repetitivo envolvido na utilização destes frameworks. Podes saber mais visitando as páginas de suporte DPDK e PF_RING no site do PcapPlusPlus.
Benchmarks
Usámos o projeto packet-capture-benchmarks de Matias Fontanini para comparar o desempenho do PcapPlusPlus com outras bibliotecas C++ semelhantes (como libtins e libcrafter).
Podes ver os resultados na página Benchmarks no site do PcapPlusPlus.
Provide Feedback
Ficaríamos muito felizes em receber feedback; por favor, não hesites em contactar-nos de qualquer uma das seguintes formas:
- Abre um ticket no GitHub
- Publica uma mensagem no grupo Google do PcapPlusPlus: https://groups.google.com/d/forum/pcapplusplus-support
- Faz uma pergunta no Stack Overflow: https://stackoverflow.com/questions/tagged/pcapplusplus
- Envia um e-mail para: [email protected]
- Segue-nos no X: https://x.com/seladb
Se gostas deste projeto, por favor Dá-nos uma estrela no GitHub — isso ajuda! ⭐ ⭐
Visita o site do PcapPlusPlus para saberes mais.
Contributing
Agradecemos muito qualquer contribuição para este projeto. Se estás interessado em contribuir, visita a página de contribuição no site do PcapPlusPlus.
License
O PcapPlusPlus é lançado sob a licença Unlicense.
