
크로스 플랫폼 C++ 라이브러리로, 고성능 네트워크 패킷 캡처, 파싱, 제작 및 분석을 제공합니다. libpcap, DPDK, AF_XDP, PF_RING을 지원하며, TCP 재조립, TLS 핑거프린팅 및 프로토콜 디코딩을 포함합니다.
⚠️ 참고: 이 번역은 AI를 사용하여 유지·동기화되며, 최신 영어 버전과 차이가 있을 수 있습니다. 부정확한 내용을 발견하시면 GitHub 이슈를 등록하거나 PR을 제출해 주세요.
PcapPlusPlus는 네트워크 패킷을 캡처, 분석 및 생성하기 위한 멀티 플랫폼 C++ 라이브러리입니다. 이 라이브러리는 효율적이고 강력하며 사용이 용이하도록 설계되었습니다.
PcapPlusPlus는 다양한 네트워크 프로토콜을 디코딩하고 생성할 수 있는 기능을 제공하며, libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, WinDivert, PF_RING 등과 같은 유용한 패킷 처리 엔진을 위한 손쉬운 C++ 래퍼를 지원합니다.
번역: English · 正體中文 · 한국어 · 日本語 · Русский
GitHub 릴리스 페이지에서 다운로드하거나 패키지 관리자를 사용할 수 있으며, 직접 PcapPlusPlus를 빌드할 수도 있습니다. 자세한 내용은 PcapPlusPlus 웹사이트의 다운로드 페이지를 방문하세요.
https://github.com/seladb/PcapPlusPlus/releases/latest
brew install pcapplusplus
Homebrew formulae: 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
PcapPlusPlus 웹사이트의 소스에서 빌드 페이지에서 플랫폼에 맞는 빌드 지침을 따르세요.
v23.09 이상의 PcapPlusPlus 릴리스는 GitHub 증명을 통해 서명됩니다. 모든 증명은 여기에서 확인할 수 있습니다. 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;
}
// raw 패킷을 파싱된 패킷으로 변환
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 << "Source IP is '" << srcIP << "'; Dest IP is '" << destIP << "'" << std::endl;
}
// 파일 닫기
reader.close();
return 0;
}
자세한 내용은 PcapPlusPlus 웹사이트의 시작하기 페이지에서 확인할 수 있습니다. 이 페이지는 애플리케이션을 빠르게 시작할 수 있는 단계별 안내를 제공합니다.
PcapPlusPlus는 다음의 세 가지 라이브러리로 구성됩니다:
PcapPlusPlus 웹사이트의 API 문서 섹션에서 자세한 API 문서를 확인할 수 있습니다. 누락된 내용이 있다면 문의해 주세요.
PcapPlusPlus는 현재
Windows
PcapPlusPlus는 현재 다음 프로토콜의 패킷을 파싱, 편집 및 생성할 수 있습니다:
Data Plane Development Kit (DPDK)는 빠른 패킷 처리를 위한 데이터 플레인 라이브러리와 네트워크 인터페이스 컨트롤러 드라이버 모음입니다.
PF_RING™은 패킷 캡처 속도를 획기적으로 향상시키는 새로운 유형의 네트워크 소켓입니다.
두 프레임워크 모두 매우 빠른 패킷 처리(라인 속도까지)를 제공하며, 라우터, 방화벽, 로드 밸런서 등 다양한 네트워크 애플리케이션에서 사용됩니다. PcapPlusPlus는 DPDK 및 PF_RING 위에 C++ 추상화 계층을 제공합니다. 이 추상화 계층은 두 프레임워크를 사용할 때 발생하는 많은 보일러플레이트 코드를 제거하여 사용하기 쉬운 인터페이스를 제공합니다. 자세한 내용은 PcapPlusPlus 웹사이트의 DPDK 및 PF_RING 지원 페이지에서 확인하세요.
Matias Fontanini의 packet-capture-benchmarks 프로젝트를 사용하여 PcapPlusPlus와 다른 유사한 C++ 라이브러리(libtins, libcrafter 등)의 성능을 비교했습니다.
결과는 PcapPlusPlus 웹사이트의 벤치마크 페이지에서 확인할 수 있습니다.
피드백을 환영합니다. 다음 방법을 통해 연락해 주세요:
이 프로젝트가 마음에 드시면 GitHub에서 Star를 눌러 주세요 ⭐ ⭐
자세한 내용은 PcapPlusPlus 웹사이트를 방문하여 확인할 수 있습니다.
이 프로젝트에 기여해 주신다면 감사하겠습니다. 기여에 관심이 있으시면 PcapPlusPlus 웹사이트의 기여 페이지를 방문해 주세요.
PcapPlusPlus는 Unlicense 라이선스로 제공됩니다.