
Многоплатформенная библиотека на C++ для высокопроизводительного захвата, разбора, создания и анализа сетевых пакетов. Поддерживает libpcap, DPDK, AF_XDP, PF_RING, а также включает сборку TCP, анализ отпечатков TLS и декодирование протоколов.
⚠️ Внимание: Этот перевод поддерживается и синхронизируется с помощью AI. Он может отличаться от последней английской версии. Если вы обнаружите ошибки, пожалуйста, создайте GitHub issue или отправьте PR.
PcapPlusPlus — это кроссплатформенная C++ библиотека для захвата, анализа и формирования сетевых пакетов. Она разработана, чтобы быть эффективной, мощной и простой в использовании.
PcapPlusPlus поддерживает возможности декодирования и создания для большого количества сетевых протоколов. Она также предоставляет удобные C++ обертки для самых популярных движков обработки пакетов, таких как libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert и PF_RING.
Переводы: English · 正體中文 · 한국어 · 日本語 · Русский
Вы можете выбрать между загрузкой со страницы релизов GitHub, использованием пакетного менеджера или самостоятельной сборкой PcapPlusPlus. Для получения подробной информации посетите страницу Download на веб-сайте PcapPlusPlus.
https://github.com/seladb/PcapPlusPlus/releases/latest
brew install pcapplusplus
Формула Homebrew: https://formulae.brew.sh/formula/pcapplusplus
Windows:
.\vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Порт Vcpkg: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
conan install "pcapplusplus/[>0]@" -u
Пакет в ConanCenter: https://conan.io/center/pcapplusplus
Клонируйте git-репозиторий:
git clone https://github.com/seladb/PcapPlusPlus.git
Следуйте инструкциям по сборке для вашей платформы на странице Build From Source веб-сайта PcapPlusPlus.
Релизы PcapPlusPlus новее v23.09 подписаны с помощью GitHub attestation. Все аттестации можно найти здесь. Вы можете проверить подлинность этих пакетов с помощью GitHub CLI. Для проверки следуйте актуальным инструкциям gh attestation verify. Краткая команда для проверки:
gh attestation verify <path-to-package-file> --repository seladb/PcapPlusPlus
в терминале должен появиться следующий вывод:
✓ Verification succeeded!
Писать приложения с PcapPlusPlus очень просто и интуитивно понятно. Вот пример простого приложения, которое показывает, как прочитать пакет из PCAP-файла и разобрать его:
#include <iostream>
#include "IPv4Layer.h"
#include "Packet.h"
#include "PcapFileDevice.h"
int main(int argc, char* argv[])
{
// открыть pcap-файл для чтения
pcpp::PcapFileReaderDevice reader("1_packet.pcap");
if (!reader.open())
{
std::cerr << "Ошибка при открытии pcap-файла" << std::endl;
return 1;
}
// прочитать первый (и единственный) пакет из файла
pcpp::RawPacket rawPacket;
if (!reader.getNextPacket(rawPacket))
{
std::cerr << "Не удалось прочитать первый пакет в файле" << std::endl;
return 1;
}
// преобразовать необработанный пакет в разобранный (parsed) пакет
pcpp::Packet parsedPacket(&rawPacket);
// проверить, является ли пакет пакетом IPv4
if (parsedPacket.isPacketOfType(pcpp::IPv4))
{
// извлечь IP-адреса источника и назначения
pcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address();
pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();
// напечатать IP-адреса источника и назначения
std::cout << "IP-адрес источника: '" << srcIP << "'; IP-адрес назначения: '" << destIP << "'" << std::endl;
}
// закрыть файл
reader.close();
return 0;
}
Вы можете найти гораздо больше информации на странице Getting Started веб-сайта PcapPlusPlus. Эта страница проведет вас через несколько простых шагов для запуска вашего приложения.
PcapPlusPlus состоит из 3 библиотек:
Обширную документацию API можно найти в разделе документации API на веб-сайте PcapPlusPlus. Если вы заметили недостающие данные, пожалуйста, свяжитесь с нами.
На данный момент PcapPlusPlus поддерживается на:
Windows
PcapPlusPlus в настоящее время поддерживает анализ, редактирование и создание пакетов следующих протоколов:
The Data Plane Development Kit (DPDK) — это набор библиотек плоскости данных и драйверов контроллеров сетевых интерфейсов для быстрой обработки пакетов.
PF_RING™ — это новый тип сетевого сокета, который значительно повышает скорость захвата пакетов.
Оба фреймворка обеспечивают очень быструю обработку пакетов (вплоть до скорости линии) и используются во многих сетевых приложениях, таких как маршрутизаторы, межсетевые экраны, балансировщики нагрузки и т.д. PcapPlusPlus предоставляет уровень абстракции C++ над DPDK и PF_RING. Этот уровень абстракции предоставляет простой в использовании интерфейс, который избавляет от написания большого количества шаблонного кода, необходимого для использования этих фреймворков. Вы можете узнать больше, посетив страницы поддержки DPDK и PF_RING на веб-сайте PcapPlusPlus.
Мы использовали проект Матиаса Фонтанини packet-capture-benchmarks для сравнения производительности PcapPlusPlus с другими аналогичными C++ библиотеками (такими как libtins и libcrafter).
Результаты вы можете увидеть на странице Benchmarks веб-сайта PcapPlusPlus.
Мы будем очень рады обратной связи, пожалуйста, свяжитесь с нами любым из следующих способов:
Если вам нравится этот проект, пожалуйста, поставьте нам звезду — это помогает! ⭐ ⭐
Пожалуйста, посетите веб-сайт PcapPlusPlus чтобы узнать больше.
Мы будем очень признательны за любой вклад в этот проект. Если вы заинтересованы, пожалуйста, посетите страницу участия на веб-сайте PcapPlusPlus.
PcapPlusPlus выпущен под лицензией Unlicense.