PcapPlusPlus — это мультиплатформенная библиотека C++ для захвата, анализа и создания сетевых пакетов. Он разработан, чтобы быть эффективным, мощным и простым в использовании.
PcapPlusPlus обеспечивает возможности декодирования и создания большого количества сетевых протоколов. Он также предоставляет простые в использовании оболочки C++ для самых популярных механизмов обработки пакетов, таких как libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP и PF_RING.
Оглавление
Скачать
Страница выпуска GitHub
Домашнее пиво
Вкпкг
Конан
Построй сам
Проверьте свои пакеты
Обзор функций
Начиная
API-документация
Поддержка нескольких платформ
Поддерживаемые сетевые протоколы
Уровень канала передачи данных (L2)
Сетевой уровень (L3)
Транспортный уровень (L4)
Сеансовый уровень (L5)
Уровень представления (L6)
Прикладной уровень (L7)
Поддержка DPDK и PF_RING
Тесты
Оставьте отзыв
Содействие
Лицензия
Вы можете выбрать между загрузкой со страницы выпуска GitHub, использованием менеджера пакетов или сборкой PcapPlusPlus самостоятельно. Для получения более подробной информации посетите страницу загрузки на веб-сайте PcapPlusPlus.
https://github.com/seladb/PcapPlusPlus/releases/latest
заварить установку pcapplusplus
Формулы домашнего пивоварения: https://formulae.brew.sh/formula/pcapplusplus
Окна:
.vcpkg install pcapplusplus
МакОС/Линукс:
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-клон https://github.com/seladb/PcapPlusPlus.git
Следуйте инструкциям по сборке в соответствии с вашей платформой на странице «Сборка из исходного кода» на веб-сайте PcapPlusPlus.
Релизы PcapPlusPlus, выпущенные позже версии 23.09, подписаны аттестацией GitHub. Все свидетельства можно найти здесь. Вы можете проверить аттестацию этих пакетов с помощью GitHub CLI. Для проверки пакетов вы можете следовать последним инструкциям из gh attestationverify. Для простых инструкций вы можете использовать следующую команду:
gh аттестация проверить <путь к файлу-пакета> --repository seladb/PcapPlusPlus
и вы должны увидеть следующий вывод в своем терминале:
✓ Проверка прошла успешно!
Захват пакетов с помощью простой в использовании оболочки C++ для популярных механизмов захвата пакетов, таких как libpcap, WinPcap, Npcap, Intel DPDK, eBPF AF_XDP, ntop PF_RING и raw-сокеты [Подробнее]
Анализ и обработка пакетов , включая подробный анализ протоколов и уровней, генерацию и редактирование пакетов для широкого спектра сетевых протоколов [Подробнее]
Чтение и запись пакетов из/в файлы в форматах PCAP и PCAPNG [Подробнее]
Обработка пакетов на линейной скорости с помощью эффективной и простой в использовании оболочки C++ для DPDK, eBPF AF_XDP и PF_RING [Подробнее]
Мультиплатформенная поддержка — PcapPlusPlus полностью поддерживается в Linux, MacOS, Windows, Android и FreeBSD.
Повторная сборка пакетов — уникальная реализация повторной сборки TCP , которая включает в себя повторную передачу TCP, TCP-пакеты, находящиеся вне порядка, и отсутствующие данные TCP, а также фрагментацию и дефрагментацию IP для создания и повторной сборки фрагментов IPv4 и IPv6. [Подробнее]
Фильтрация пакетов , которая делает фильтры BPF в libpcap намного более удобными для пользователя [Подробнее]
TLS Fingerprinting — реализация на C++ методов TLS-отпечатков JA3 и JA3S [Подробнее]
Написание приложений с помощью 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; }// анализируем необработанный пакет в разобранный пакет packagepcpp::Packet parsedPacket(&rawPacket);// проверяем, что пакет является IPv4if (parsedPacket.isPacketOfType(pcpp::IPv4)) {// извлекаем исходный и целевой IPspcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address(); pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();// распечатываем источник и место назначения IPsstd::cout << "Исходный IP равен '" << srcIP << "'; Dest IP равен '" << destIP << "'" << std::endl; }// закрываем filereader.close(); return 0; }
Вы можете найти гораздо больше информации на странице «Начало работы» на веб-сайте PcapPlusPlus. На этой странице вы пройдете несколько простых шагов, чтобы запустить приложение.
PcapPlusPlus состоит из 3 библиотек:
Packet++ — библиотека для парсинга, создания и редактирования сетевых пакетов.
Pcap++ — библиотека для перехвата и отправки пакетов, предоставления информации о сети и сетевых адаптерах, статистики и т. д. На самом деле это оболочка C++ для механизмов захвата пакетов, таких как libpcap, WinPcap, Npcap, DPDK и PF_RING.
Common++ — библиотека с некоторыми общими утилитами кода, используемыми как Packet++, так и Pcap++.
Вы можете найти обширную документацию по API в разделе документации API на веб-сайте PcapPlusPlus. Если вы видите какие-либо недостающие данные, пожалуйста, свяжитесь с нами.
PcapPlusPlus в настоящее время поддерживается в Windows.
PcapPlusPlus в настоящее время поддерживает анализ, редактирование и создание пакетов следующих протоколов:
Ethernet II
IEEE 802.3 Ethernet
LLC (поддерживается только BPDU)
Нулевой/петлевой контроль
Трейлер пакета (он же нижний колонтитул или отступ)
PPPoE
SLL (приготовленный захват Linux)
SLL2 (готовый захват Linux v2)
СТП
ВЛАН
ВКСЛАН
Пробуждение по локальной сети (WoL)
NFLOG (Linux Netfilter NFLOG) — только синтаксический анализ (без возможности редактирования)
АРП
ГРЭ
ICMP
ICMPv6
IGMP (поддерживаются IGMPv1, IGMPv2 и IGMPv3)
IPv4
IPv6
МПЛС
НДП
Необработанный IP (IPv4 и IPv6)
VRRP (IPv4 и IPv6)
WireGuard
COTP
ГТП (v1)
IPSec AH и ESP — только синтаксический анализ (без возможности редактирования)
TCP
ТПКТ
UDP
СДП
ГЛОТОК
SSL/TLS — только анализ (без возможности редактирования)
Декодер и кодер ASN.1
BGP (версия 4)
DHCP
DHCPv6
DNS
FTP
HTTP-заголовки (запрос и ответ)
ЛДАП
НТП (v3, v4)
Радиус
S7-коммуникация (S7comm)
SMTP
НЕКОТОРЫЕ/IP
SSH — только парсинг (без возможности редактирования)
Telnet — только синтаксический анализ (без возможности редактирования)
Общая полезная нагрузка
Комплект разработки плоскости данных (DPDK) — это набор библиотек плоскости данных и драйверов контроллера сетевого интерфейса для быстрой обработки пакетов.
PF_RING™ — это новый тип сетевого сокета, который значительно повышает скорость захвата пакетов.
Обе платформы обеспечивают очень быструю обработку пакетов (вплоть до скорости линии) и используются во многих сетевых приложениях, таких как маршрутизаторы, межсетевые экраны, балансировщики нагрузки и т. д. PcapPlusPLus предоставляет уровень абстракции C++ поверх DPDK и PF_RING. Этот уровень абстракции обеспечивает простой в использовании интерфейс, который устраняет большую часть шаблонов, связанных с использованием этих платформ. Вы можете узнать больше, посетив страницы поддержки DPDK и PF_RING на веб-сайте PcapPlusPlus.
Мы использовали проект пакетных тестов Матиаса Фонтанини для сравнения производительности PcapPlusPlus с другими аналогичными библиотеками C++ (такими как libtins
и libcrafter
).
Результаты можно увидеть на странице тестов на веб-сайте PcapPlusPlus.
Мы будем очень рады получить обратную связь, пожалуйста, свяжитесь с нами любым из следующих способов:
Откройте билет GitHub
Опубликуйте сообщение в группе Google PcapPlusPlus: https://groups.google.com/d/forum/pcapplusplus-support.
Задайте вопрос о переполнении стека: https://stackoverflow.com/questions/tagged/pcapplusplus
Отправьте электронное письмо по адресу: [email protected].
Следуйте за нами на X: https://x.com/seladb
Если вам нравится этот проект , поставьте нам звездочку на GitHub — это поможет! ⭐ ⭐
Посетите веб-сайт PcapPlusPlus, чтобы узнать больше.
Мы будем очень признательны за любой вклад в этот проект. Если вы заинтересованы в том, чтобы внести свой вклад, посетите страницу вклада на веб-сайте PcapPlusPlus.
PcapPlusPlus выпускается под нелицензионной лицензией.