README-rus.md
May 24, 2026 · View on GitHub
⚠️ Внимание: Этот перевод поддерживается и синхронизируется с помощью AI. Он может отличаться от последней английской версии. Если вы обнаружите ошибки, пожалуйста, создайте GitHub issue или отправьте PR.
PcapPlusPlus — это кроссплатформенная C++ библиотека для захвата, анализа и формирования сетевых пакетов. Она разработана, чтобы быть эффективной, мощной и простой в использовании.
PcapPlusPlus поддерживает возможности декодирования и создания для большого количества сетевых протоколов. Она также предоставляет удобные C++ обертки для самых популярных движков обработки пакетов, таких как libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert и PF_RING.
Переводы: English · 正體中文 · 한국어 · 日本語 · Русский
Содержание
- Содержание
- Установка
- Обзор возможностей
- Начало работы
- Документация API
- Поддержка платформ
- Поддерживаемые сетевые протоколы
- Поддержка DPDK и PF_RING
- Бенчмарки
- Обратная связь
- Участие в разработке
- Лицензия
Установка
Вы можете выбрать между загрузкой со страницы релизов GitHub, использованием пакетного менеджера или самостоятельной сборкой PcapPlusPlus. Для получения подробной информации посетите страницу Download на веб-сайте PcapPlusPlus.
Страница релизов GitHub
https://github.com/seladb/PcapPlusPlus/releases/latest
Homebrew
brew install pcapplusplus
Формула Homebrew: https://formulae.brew.sh/formula/pcapplusplus
Vcpkg
Windows:
.\vcpkg install pcapplusplus
MacOS/Linux:
vcpkg install pcapplusplus
Порт Vcpkg: https://github.com/microsoft/vcpkg/tree/master/ports/pcapplusplus
Conan
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!
Обзор возможностей
- Захват пакетов через удобную C++ обертку для популярных движков, таких как libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, WinDivert, ntop’s PF_RING и raw sockets [Узнать больше]
- Анализ и формирование пакетов, включая детальный разбор протоколов и уровней, генерацию и редактирование пакетов для множества сетевых протоколов [Узнать больше]
- Чтение и запись пакетов в файлы в форматах PCAP и PCAPNG [Узнать больше]
- Обработка пакетов на скорости линии благодаря эффективной C++ обертке для DPDK, eBPF AF_XDP и PF_RING [Узнать больше]
- Мультиплатформенная поддержка - PcapPlusPlus полностью поддерживается на Linux, MacOS, Windows, Android и FreeBSD
- Сборка пакетов — уникальная реализация TCP Reassembly, которая включает обработку ретрансляции TCP, пакетов вне очереди и отсутствующих данных, а также IP Fragmentation and Defragmentation для создания и сборки фрагментов IPv4 и IPv6 [Узнать больше]
- Фильтрация пакетов, которая делает BPF-фильтры libpcap намного более удобными для пользователя [Узнать больше]
- TLS Fingerprinting — реализация на C++ алгоритмов JA3 и JA3S для создания отпечатков TLS [Узнать больше]
Начало работы
Писать приложения с 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. Эта страница проведет вас через несколько простых шагов для запуска вашего приложения.
Документация API
PcapPlusPlus состоит из 3 библиотек:
- Packet++ — библиотека для анализа, создания и редактирования сетевых пакетов
- Pcap++ — библиотека для перехвата и отправки пакетов, предоставления информации о сети и сетевых картах, статистики и т.д. По сути, это C++ обертка для движков захвата пакетов, таких как libpcap, WinPcap, Npcap, DPDK, AF_XDP, WinDivert и PF_RING
- Common++ — библиотека с общими вспомогательными утилитами, используемыми в Packet++ и Pcap++
Обширную документацию API можно найти в разделе документации API на веб-сайте PcapPlusPlus. Если вы заметили недостающие данные, пожалуйста, свяжитесь с нами.
Поддержка платформ
На данный момент PcapPlusPlus поддерживается на:
Windows
Поддерживаемые сетевые протоколы
PcapPlusPlus в настоящее время поддерживает анализ, редактирование и создание пакетов следующих протоколов:
Канальный уровень (L2)
- Cisco HDLC
- Ethernet II
- IEEE 802.3 Ethernet
- LLC (поддерживается только BPDU)
- Null/Loopback
- Трейлер пакета (также известный как футер или паддинг)
- PPPoE
- SLL (Linux cooked capture)
- SLL2 (Linux cooked capture v2)
- STP
- VLAN
- VXLAN
- Wake on LAN (WoL)
- NFLOG (Linux Netfilter NFLOG) — только анализ (без возможностей редактирования)
Сетевой уровень (L3)
- ARP
- GRE
- ICMP
- ICMPv6
- IGMP (поддерживаются IGMPv1, IGMPv2 и IGMPv3)
- IPv4
- IPv6
- MPLS
- NDP
- Raw IP (IPv4 и IPv6)
- VRRP (IPv4 и IPv6)
- WireGuard
Транспортный уровень (L4)
- COTP
- GTP (v1 и v2)
- IPSec AH и ESP — только анализ (без возможностей редактирования)
- TCP
- TPKT
- UDP
Сеансовый уровень (L5)
- SDP
- SIP
Уровень представления (L6)
- SSL/TLS — только анализ (без возможностей редактирования)
Прикладной уровень (L7)
- Декодер и энкодер ASN.1
- BGP (v4)
- Декодеры криптографических ключей
- DHCP
- DHCPv6
- DNS
- DoIP
- FTP
- Заголовки HTTP (запрос и ответ)
- LDAP
- Modbus
- MySQL — только анализ (без возможностей редактирования)
- NTP (v3, v4)
- Декодер и энкодер PEM
- PostgreSQL Wire Protocol (PGWire) — только анализ (без возможностей редактирования)
- Radius
- S7 Communication (S7comm)
- SMTP
- SOME/IP
- SSH — только анализ (без возможностей редактирования)
- Telnet — только анализ (без возможностей редактирования)
- Сертификаты X509 — только анализ (без возможностей редактирования)
- Generic payload
Поддержка DPDK и PF_RING
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.
Обратная связь
Мы будем очень рады обратной связи, пожалуйста, свяжитесь с нами любым из следующих способов:
- Откройте тикет на GitHub
- Опубликуйте сообщение в группе Google PcapPlusPlus: https://groups.google.com/d/forum/pcapplusplus-support
- Задайте вопрос на Stack Overflow: https://stackoverflow.com/questions/tagged/pcapplusplus
- Отправьте письмо на: pcapplusplus@gmail.com
- Подпишитесь на нас в X: https://x.com/seladb
Если вам нравится этот проект, пожалуйста, поставьте нам звезду — это помогает! :star: :star:
Пожалуйста, посетите веб-сайт PcapPlusPlus чтобы узнать больше.
Участие в разработке
Мы будем очень признательны за любой вклад в этот проект. Если вы заинтересованы, пожалуйста, посетите страницу участия на веб-сайте PcapPlusPlus.
Лицензия
PcapPlusPlus выпущен под лицензией Unlicense.
