README-rus.md

May 24, 2026 · View on GitHub

⚠️ Внимание: Этот перевод поддерживается и синхронизируется с помощью AI. Он может отличаться от последней английской версии. Если вы обнаружите ошибки, пожалуйста, создайте GitHub issue или отправьте PR.

PcapPlusPlus Logo

GitHub Workflow Status GitHub Workflow Status Codecov OpenSSF Scorecard GitHub contributors

X Follow GitHub Repo stars

PcapPlusPlus — это кроссплатформенная C++ библиотека для захвата, анализа и формирования сетевых пакетов. Она разработана, чтобы быть эффективной, мощной и простой в использовании.

PcapPlusPlus поддерживает возможности декодирования и создания для большого количества сетевых протоколов. Она также предоставляет удобные C++ обертки для самых популярных движков обработки пакетов, таких как libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert и PF_RING.

Переводы: English · 正體中文 · 한국어 · 日本語 · Русский

Содержание

Установка

Вы можете выбрать между загрузкой со страницы релизов GitHub, использованием пакетного менеджера или самостоятельной сборкой PcapPlusPlus. Для получения подробной информации посетите страницу Download на веб-сайте PcapPlusPlus.

GitHub all releases

Страница релизов 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 библиотек:

  1. Packet++ — библиотека для анализа, создания и редактирования сетевых пакетов
  2. Pcap++ — библиотека для перехвата и отправки пакетов, предоставления информации о сети и сетевых картах, статистики и т.д. По сути, это C++ обертка для движков захвата пакетов, таких как libpcap, WinPcap, Npcap, DPDK, AF_XDP, WinDivert и PF_RING
  3. Common++ — библиотека с общими вспомогательными утилитами, используемыми в Packet++ и Pcap++

Обширную документацию API можно найти в разделе документации API на веб-сайте PcapPlusPlus. Если вы заметили недостающие данные, пожалуйста, свяжитесь с нами.

Поддержка платформ

На данный момент PcapPlusPlus поддерживается на: Windows , Linux , MacOS , Android и FreeBSD . Пожалуйста, посетите веб-сайт PcapPlusPlus, чтобы увидеть все поддерживаемые платформы и обратитесь к разделу Загрузка, чтобы начать использование PcapPlusPlus на вашей платформе.

Поддерживаемые сетевые протоколы

PcapPlusPlus в настоящее время поддерживает анализ, редактирование и создание пакетов следующих протоколов:

Канальный уровень (L2)

  1. Cisco HDLC
  2. Ethernet II
  3. IEEE 802.3 Ethernet
  4. LLC (поддерживается только BPDU)
  5. Null/Loopback
  6. Трейлер пакета (также известный как футер или паддинг)
  7. PPPoE
  8. SLL (Linux cooked capture)
  9. SLL2 (Linux cooked capture v2)
  10. STP
  11. VLAN
  12. VXLAN
  13. Wake on LAN (WoL)
  14. NFLOG (Linux Netfilter NFLOG) — только анализ (без возможностей редактирования)

Сетевой уровень (L3)

  1. ARP
  2. GRE
  3. ICMP
  4. ICMPv6
  5. IGMP (поддерживаются IGMPv1, IGMPv2 и IGMPv3)
  6. IPv4
  7. IPv6
  8. MPLS
  9. NDP
  10. Raw IP (IPv4 и IPv6)
  11. VRRP (IPv4 и IPv6)
  12. WireGuard

Транспортный уровень (L4)

  1. COTP
  2. GTP (v1 и v2)
  3. IPSec AH и ESP — только анализ (без возможностей редактирования)
  4. TCP
  5. TPKT
  6. UDP

Сеансовый уровень (L5)

  1. SDP
  2. SIP

Уровень представления (L6)

  1. SSL/TLS — только анализ (без возможностей редактирования)

Прикладной уровень (L7)

  1. Декодер и энкодер ASN.1
  2. BGP (v4)
  3. Декодеры криптографических ключей
  4. DHCP
  5. DHCPv6
  6. DNS
  7. DoIP
  8. FTP
  9. Заголовки HTTP (запрос и ответ)
  10. LDAP
  11. Modbus
  12. MySQL — только анализ (без возможностей редактирования)
  13. NTP (v3, v4)
  14. Декодер и энкодер PEM
  15. PostgreSQL Wire Protocol (PGWire) — только анализ (без возможностей редактирования)
  16. Radius
  17. S7 Communication (S7comm)
  18. SMTP
  19. SOME/IP
  20. SSH — только анализ (без возможностей редактирования)
  21. Telnet — только анализ (без возможностей редактирования)
  22. Сертификаты X509 — только анализ (без возможностей редактирования)
  23. 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.

Обратная связь

Мы будем очень рады обратной связи, пожалуйста, свяжитесь с нами любым из следующих способов:

Если вам нравится этот проект, пожалуйста, поставьте нам звезду — это помогает! :star: :star:

Пожалуйста, посетите веб-сайт PcapPlusPlus чтобы узнать больше.

Участие в разработке

Мы будем очень признательны за любой вклад в этот проект. Если вы заинтересованы, пожалуйста, посетите страницу участия на веб-сайте PcapPlusPlus.

Лицензия

PcapPlusPlus выпущен под лицензией Unlicense.

GitHub