libpcap (packet capture library)
주요 역할:
커널 수준
사용자 공간
BPF(Berkeley Packet Filter)
핸들 생성 및 초기화
pcap_t *pcap_open_live(const char *device, int snaplen,
int promisc, int to_ms, char *errbuf);
device → 인터페이스 (eth0, wlan0 등)snaplen → 캡처 최대 바이트promisc → Promiscuous mode 여부to_ms → 타임아웃(ms)패킷 캡처 루프
pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
필터 적용
struct bpf_program fp;
pcap_compile(handle, &fp, "tcp port 80", 0, net);
pcap_setfilter(handle, &fp);
종료 및 정리
pcap_close(handle);
| 특징 | 설명 |
|---|---|
| 실시간 패킷 캡처 | 커널 레벨에서 직접 패킷을 잡아 사용자 공간으로 전달 |
| 포터블 | Unix 계열 및 Windows(WinPcap/Npcap) 호환 |
| 고급 필터 | BPF 지원으로 효율적 패킷 필터링 |
| 다양한 프로토콜 | Ethernet, IP, TCP, UDP, ICMP 등 대부분 지원 |
| Sniffer 기반 도구 | tcpdump, Wireshark 등 다수 도구의 기반 |
네트워크 분석
보안 모니터링
DevSecOps / 펜테스트
성능 측정
권한 문제
취약점 가능성
DevSecOps 적용