Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ptcpdump — 네트워크 트래픽을 캡처하고 프로세스, 컨테이너, Kubernetes 파드 메타데이터를 자동으로 주석 처리하는 eBPF 기반 패킷 분석기로, tcpdump 호환 필터링과 PcapNG 출력을 지원합니다. | Kitploit
도구/GitHubGitHub/mozillazg/ptcpdump
Packet Sniffing & AnalysisContainer SecurityDynamic Analysis (Sandboxing)Network ForensicsForensicsNetwork SecurityDigital ForensicsCloud Security
GitHubmozillazg/ptcpdump

ptcpdump

네트워크 트래픽을 캡처하고 프로세스, 컨테이너, Kubernetes 파드 메타데이터를 자동으로 주석 처리하는 eBPF 기반 패킷 분석기로, tcpdump 호환 필터링과 PcapNG 출력을 지원합니다.

저장소 보기
1.3k67714개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ptcpdump

amd64-e2e arm64-e2e Release Coveralls English | 中文

ptcpdump는 eBPF로 구동되는 tcpdump 호환 패킷 분석기로, 감지 가능한 경우 패킷에 프로세스/컨테이너/파드 메타데이터를 자동으로 주석 처리합니다. jschwinger233/skbdump에서 영감을 받았습니다.

목차

  • 기능
  • 설치
    • 요구 사항
  • 사용법
    • 예시 명령어
    • 예시 출력
    • Docker로 실행하기
    • 백엔드
    • 플래그
  • tcpdump와 비교
  • 개발
    • 의존성
    • 빌드
  • 관련 프로젝트
    • Flownix

기능

  • 🔍 프로세스/컨테이너/파드 인식 패킷 캡처.
  • 📦 필터: --pid (프로세스), --pname (프로세스 이름), --container-id (컨테이너), --pod-name (파드).
  • 🎯 tcpdump 호환 플래그 (-i, -w, -c, -s, -n, -C, -W, -A 등).
  • 📜 tcpdump처럼 pcap-filter(7) 구문 지원.
  • 🌳 tcpdump 스타일 출력 + 프로세스/컨테이너/파드 컨텍스트.
  • 📑 상세 모드에서는 프로세스와 컨테이너/파드의 자세한 메타데이터를 보여줍니다.
  • 💾 메타데이터가 포함된 PcapNG (Wireshark 호환).
  • 🌐 네트워크 네임스페이스 간 캡처 (--netns).
  • 🚀 커널 공간 BPF 필터링 (오버헤드 낮음, CPU 사용량 감소).
  • ⚡ 컨테이너 런타임 통합 (Docker, containerd).

설치

x86_64 및 arm64용 정적 링크 실행 파일을 릴리스 페이지에서 다운로드할 수 있습니다.

요구 사항

Linux 커널 >= 5.2 (BPF 및 BTF 지원으로 컴파일).

ptcpdump는 선택적으로 debugfs가 필요합니다. /sys/kernel/debug에 마운트되어 있어야 합니다. 폴더가 비어 있는 경우 다음 명령으로 마운트할 수 있습니다:

mount -t debugfs none /sys/kernel/debug

다음 커널 구성이 필요합니다. 모듈로 빌드하는 것도 가능합니다.

옵션백엔드비고
CONFIG_BPF=y공통필수
CONFIG_BPF_SYSCALL=y공통필수
CONFIG_DEBUG_INFO=y공통필수
CONFIG_DEBUG_INFO_BTF=y공통필수
CONFIG_KPROBES=y공통필수
CONFIG_KPROBE_EVENTS=y공통필수
CONFIG_TRACEPOINTS=y공통필수
CONFIG_PERF_EVENTS=y공통필수
CONFIG_NET=y공통필수
CONFIG_NET_SCHED=ytc필수
CONFIG_NET_CLS_BPF=ytc필수
CONFIG_NET_ACT_BPF=ytc필수
CONFIG_NET_SCH_INGRESS=ytc필수
CONFIG_CGROUPS=ycgroup-skb필수
CONFIG_CGROUP_BPF=ycgroup-skb필수
CONFIG_FILTER=ysocket-filter필수
CONFIG_BPF_TRAMPOLINE=ytp-btf필수
CONFIG_SECURITY=y공통선택 (권장)
CONFIG_BPF_TRAMPOLINE=y공통선택 (권장)
CONFIG_SOCK_CGROUP_DATA=y공통선택 (권장)
CONFIG_BPF_JIT=y공통선택 (권장)
CONFIG_CGROUP_BPF=ytc, tp-btf, socket-filter선택 (권장)
CONFIG_CGROUPS=ytc, tp-btf, socket-filter선택 (권장)

zgrep $OPTION /proc/config.gz를 사용하여 옵션 활성화 여부를 확인할 수 있습니다.

🔝

사용법

예시 명령어

tcpdump처럼 필터링:

sudo ptcpdump -i eth0 tcp
sudo ptcpdump -i eth0 -A -s 0 -n -v tcp and port 80 and host 10.10.1.1
sudo ptcpdump -i any -s 0 -n -v -C 100MB -W 3 -w test.pcapng 'tcp and port 80 and host 10.10.1.1'
sudo ptcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'

여러 인터페이스:

sudo ptcpdump -i eth0 -i lo

프로세스 또는 사용자로 필터링:

sudo ptcpdump -i any --pid 1234 --pid 233 -f
sudo ptcpdump -i any --pname curl
sudo ptcpdump -i any --uid 1000

대상 프로그램을 실행하여 프로세스 기준으로 캡처:

sudo ptcpdump -i any -- curl ubuntu.com

컨테이너 또는 파드로 필터링:

sudo ptcpdump -i any --container-id 36f0310403b1
sudo ptcpdump -i any --container-name test
sudo ptcpdump -i any --pod-name test.default

PcapNG 형식으로 데이터 저장:

sudo ptcpdump -i any -w demo.pcapng
sudo ptcpdump -i any -w - port 80 | tcpdump -n -r -
sudo ptcpdump -i any -w - port 80 | tshark -r -

다른 네트워크 네임스페이스의 인터페이스 캡처:

sudo ptcpdump -i lo --netns /run/netns/foo --netns /run/netns/bar
sudo ptcpdump -i any --netns /run/netns/foobar
sudo ptcpdump -i any --netns /proc/26/ns/net

🔝

예시 출력

기본:

09:32:09.718892 vethee2a302f wget.3553008 In IP 10.244.0.2.33426 > 139.178.84.217.80: Flags [S], seq 4113492822, win 64240, length 0, ParentProc [python3.834381], Container [test], Pod [test.default]
09:32:09.718941 eth0 wget.3553008 Out IP 172.19.0.2.33426 > 139.178.84.217.80: Flags [S], seq 4113492822, win 64240, length 0, ParentProc [python3.834381], Container [test], Pod [test.default]

-q 사용:

09:32:09.718892 vethee2a302f wget.3553008 In IP 10.244.0.2.33426 > 139.178.84.217.80: tcp 0, ParentProc [python3.834381], Container [test], Pod [test.default]
09:32:09.718941 eth0 wget.3553008 Out IP 172.19.0.2.33426 > 139.178.84.217.80: tcp 0, ParentProc [python3.834381], Container [test], Pod [test.default]

-v 사용:

13:44:41.529003 eth0 In IP (tos 0x4, ttl 45, id 45428, offset 0, flags [DF], proto TCP (6), length 52)
    139.178.84.217.443 > 172.19.0.2.42606: Flags [.], cksum 0x5284, seq 3173118145, ack 1385712707, win 118, options [nop,nop,TS val 134560683 ecr 1627716996], length 0
    Process (pid 553587, cmd /usr/bin/wget, args wget kernel.org)
    User (uid 1000)
    ParentProc (pid 553296, cmd /bin/sh, args sh)
    Container (name test, id d9028334568bf75a5a084963a8f98f78c56bba7f45f823b3780a135b71b91e95, image docker.io/library/alpine:3.18, labels {"io.cri-containerd.kind":"container","io.kubernetes.container.name":"test","io.kubernetes.pod.name":"test","io.kubernetes.pod.namespace":"default","io.kubernetes.pod.uid":"9e4bc54b-de48-4b1c-8b9e-54709f67ed0c"})
    Pod (name test, namespace default, UID 9e4bc54b-de48-4b1c-8b9e-54709f67ed0c, labels {"run":"test"}, annotations {"kubernetes.io/config.seen":"2024-07-21T12:41:00.460249620Z","kubernetes.io/config.source":"api"})

출력에 포함할 컨텍스트를 제한하려면 --context 사용:

도구 다운로드