Skip to content

Latest commit

 

History

History
292 lines (210 loc) · 12.9 KB

README-kor.md

File metadata and controls

292 lines (210 loc) · 12.9 KB

PcapPlusPlus 로고

GitHub Workflow 상태 GitHub Workflow 상태 Codecov OpenSSF Scorecard GitHub 기여자

X 팔로우 GitHub 리포지토리 별표

PcapPlusPlus는 네트워크 패킷을 캡처, 분석 및 생성하기 위한 멀티 플랫폼 C++ 라이브러리입니다. 이 라이브러리는 효율적이고 강력하며 사용이 용이하도록 설계되었습니다.

PcapPlusPlus는 다양한 네트워크 프로토콜을 디코딩하고 생성할 수 있는 기능을 제공하며, libpcap, WinPcap, Npcap, DPDK, eBPF AF_XDP, PF_RING 등과 같은 유용한 패킷 처리 엔진을 위한 손쉬운 C++ 래퍼를 지원합니다.

번역: English · 正體中文 · 한국어

목차

다운로드

GitHub 릴리스 페이지에서 다운로드하거나 패키지 관리자를 사용할 수 있으며, 직접 PcapPlusPlus를 빌드할 수도 있습니다. 자세한 내용은 PcapPlusPlus 웹사이트의 다운로드 페이지를 방문하세요.

GitHub 모든 릴리스

GitHub 릴리스 페이지

https://github.com/seladb/PcapPlusPlus/releases/latest

Homebrew

brew install pcapplusplus

Homebrew formulae: 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

PcapPlusPlus 웹사이트의 소스에서 빌드 페이지에서 플랫폼에 맞는 빌드 지침을 따르세요.

패키지 검증

v23.09 이상의 PcapPlusPlus 릴리스는 GitHub 증명을 통해 서명됩니다. 모든 증명은 여기에서 확인할 수 있습니다. GitHub CLI를 통해 이러한 패키지의 증명을 검증할 수 있습니다. 패키지 검증을 위해 다음 명령어를 사용할 수 있습니다:

gh attestation verify <패키지 파일 경로> --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 웹사이트의 시작하기 페이지에서 확인할 수 있습니다. 이 페이지는 애플리케이션을 빠르게 시작할 수 있는 단계별 안내를 제공합니다.

API 문서

PcapPlusPlus는 다음의 세 가지 라이브러리로 구성됩니다:

  1. Packet++ - 네트워크 패킷을 파싱하고 생성 및 편집하는 라이브러리
  2. Pcap++ - 패킷을 캡처하고 전송하며 네트워크 및 NIC 정보, 통계를 제공하는 라이브러리 (libpcap, WinPcap, Npcap, DPDK, PF_RING 등과 같은 패킷 캡처 엔진을 위한 C++ 래퍼)
  3. Common++ - Packet++ 및 Pcap++에서 사용하는 일반적인 코드 유틸리티를 포함한 라이브러리

PcapPlusPlus 웹사이트의 API 문서 섹션에서 자세한 API 문서를 확인할 수 있습니다.

멀티 플랫폼 지원

PcapPlusPlus는 현재 Windows, Linux, MacOS, Android, __FreeBSD__에서 지원됩니다. PcapPlusPlus 웹사이트에서 지원 플랫폼 전체 목록을 확인할 수 있으며, 다운로드 섹션을 참조하여 해당 플랫폼에서 PcapPlusPlus를 시작하세요.

지원되는 네트워크 프로토콜

PcapPlusPlus는 현재 다음 프로토콜의 패킷을 파싱, 편집 및 생성할 수 있습니다:

데이터 링크 계층 (L2)

  1. Ethernet II
  2. IEEE 802.3 Ethernet
  3. LLC (BPDU만 지원)
  4. Null/Loopback
  5. Packet trailer (패킷 패딩)
  6. PPPoE
  7. SLL (Linux cooked capture)
  8. SLL2 (Linux cooked capture v2)
  9. STP
  10. VLAN
  11. VXLAN
  12. Wake on LAN (WoL)
  13. 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. DHCP
  4. DHCPv6
  5. DNS
  6. FTP
  7. HTTP 헤더 (요청 및 응답)
  8. LDAP
  9. NTP (v3, v4)
  10. Radius
  11. S7 Communication (S7comm)
  12. SMTP
  13. SOME/IP
  14. SSH - 파싱만 가능 (편집 불가)
  15. Telnet - 파싱만 가능 (편집 불가)
  16. 일반 페이로드

DPDK 및 PF_RING 지원

DPDK는 빠른 패킷 처리를 위한 데이터 플레인 라이브러리 세트이며, PF_RING™은 패킷 캡처 속도를 대폭 향상시키는 새로운 유형의 네트워크 소켓입니다. PcapPlusPlus는 DPDK 및 PF_RING에 대한 C++ 추상화 계층을 제공합니다. 자세한 내용은 PcapPlusPlus 웹사이트의 DPDKPF_RING 지원 페이지에서 확인하세요.

성능 벤치마크

PcapPlusPlus는 다른 C++ 라이브러리(libtins, libcrafter 등)와 성능을 비교하기 위해 Matias Fontanini의 packet-capture-benchmarks 프로젝트를 사용했습니다. 성능 결과는 PcapPlusPlus 웹사이트의 벤치마크 페이지에서 확인할 수 있습니다.

피드백 제공

피드백을 환영합니다. 다음 방법을 통해 연락해 주세요:

이 프로젝트가 마음에 드시면 GitHub에서 Star를 눌러 주세요 ⭐ ⭐

자세한 내용은 PcapPlusPlus 웹사이트를 방문하여 확인할 수 있습니다.

기여하기

이 프로젝트에 기여해 주신다면 감사하겠습니다. 기여에 관심이 있으시면 PcapPlusPlus 웹사이트의 기여 페이지를 방문해 주세요.

라이선스

PcapPlusPlus는 Unlicense 라이선스로 제공됩니다.

GitHub