Libpcap
- 네트워크 트래픽을 캡처하고 분석하기 위해 사용되는 표준 C/C++ 라이브러리
주요 기능
- 패킷 캡쳐 : 네트워크 인터페이스 카드(NIC)를 통해 들어오거나 나가는 패킷을 실시간으로 수집
- 패킷 필터링 : BPF 엔진을 사용하여 원하지 않는 패킷은 커널 레벨에서 미리 걸러내고, 관심 있는 패킷만 전달함
- 패킷 저장 및 읽기 : 수집한 패킷을 파일 형태로 저장하거나, 저장된 파일을 다시 불러와 분석함
- 통계 수집 : 네트워크 트래픽에 대한 기본적인 통계 정보를 제공함
작동 원리
- 무차별 모드 ( Promiscuous Mode ) : 기본적으로 네트워크 카드는 자신에게 온 패킷만 받아들임, 하지만 Libpcap를 무차별 모드로 설정하면 해당 네트워크 케이블을 지나가는 모든 패킷을 수집
- 커널 버퍼 복사 : 네트워크 드라이버가 패킷을 받으면 Libpcap에서 패킷을 커널 메모리에서 사용자 메모리 영역으로 복사함 → 읽을 수 있는 상태가 됨
Libpcap가 사용된 툴들
- Tcpdump
- Wireshark → 이건 예상이 됨
- Snort
- Nmap
주요 함수
- pcap_lookupdev() : 패킷을 캡처할 네트워크 장치를 찾.
- pcap_open_live() : 네트워크 장치를 열고 캡처를 준비
- pcap_compile() : 사람이 읽기 쉬운 필터 규칙을 BPF 코드로 변환
- pcap_setfilter() : 변환된 필터를 적용
- pcap_loop() / pcap_next() : 실제로 패킷을 계속해서 잡아내거나 다음 패킷을 가져옴
- pcap_close() : 캡처를 종료하고 리소스를 해제
Scapy와의 차이
특징 Libpcap Scapy
| 언어 | C/C++ | Python |
| 주 목적 | 패킷 수집(Sniffing) | 패킷 생성 및 조작(Crafting & Manipulation) |
| 작동 방식 | 커널에서 패킷을 바이트 배열 그대로 가져옴 | 패킷을 가져와서 Pythong 객체로 변환함 |
| 난이도 | 높음( 메모리 관리, 포인터 연산 필요) | 매우 낮음 ( 직관 적인 문법 ) |
| 기반 | 독자적인 로우 레벨 라이브러리 | 내부적으로 Libpcap를 불러와서 사용함 |
'네트워크' 카테고리의 다른 글
| SAE & SAE Commit Flood (0) | 2026.01.17 |
|---|---|
| Auth Flood (0) | 2026.01.13 |
| WPA, WPA2, WPA3 (2) | 2025.12.27 |
| IEEE802.11 프레임 구조 (0) | 2025.12.26 |
| 프로토콜 및 정리 (3) | 2025.07.31 |