pcapdecode
패킷 바이너리에서 이더넷, IP, 포트 헤더를 디코딩하여 출력 필드로 할당합니다. pcapfile, table 등의 명령어로 조회한 패킷 데이터를 네트워크 계층별 필드로 분리할 때 사용합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
입력 필드
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| payload | 바이너리 | 필수 | 이더넷 프레임 바이너리. byte[] 타입이 아니면 디코딩을 건너뛰고 입력 레코드를 그대로 출력합니다. |
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| src_mac | 문자열 | 출발지 MAC 주소. XX:XX:XX:XX:XX:XX 형식입니다. |
| dst_mac | 문자열 | 목적지 MAC 주소. XX:XX:XX:XX:XX:XX 형식입니다. |
| vlan_id | 32비트 정수 | VLAN ID. 802.1Q 태그가 있는 프레임(EtherType 0x8100)에서만 할당됩니다. |
| protocol | 문자열 | IP 프로토콜 이름. icmp, tcp, udp, esp 중 하나입니다. |
| src_ip | IP 주소 | 출발지 IPv4 주소. ICMP, TCP, UDP, ESP 프로토콜에서 할당됩니다. |
| dst_ip | IP 주소 | 목적지 IPv4 주소. ICMP, TCP, UDP, ESP 프로토콜에서 할당됩니다. |
| src_port | 32비트 정수 | 출발지 포트 번호. TCP, UDP 프로토콜에서만 할당됩니다. |
| dst_port | 32비트 정수 | 목적지 포트 번호. TCP, UDP 프로토콜에서만 할당됩니다. |
오류 코드
파싱 오류
해당 사항 없음
런타임 오류
해당 사항 없음
설명
pcapdecode 명령어는 입력 레코드의 payload 필드에서 이더넷 프레임 바이너리를 읽고, L2/L3/L4 헤더를 파싱하여 출력 필드를 할당합니다. 디코딩 결과는 입력 레코드에 병합되므로, 기존 필드(_time, payload 등)는 그대로 유지됩니다.
지원하는 EtherType은 IPv4(0x0800)와 802.1Q VLAN(0x8100)이며, VLAN 프레임의 경우 내부 EtherType이 IPv4일 때만 디코딩합니다. 지원하는 IP 프로토콜은 ICMP(1), TCP(6), UDP(17), ESP(50)이며, 그 외 프로토콜이나 이더넷 헤더 길이가 부족한 패킷은 디코딩 없이 입력 레코드를 그대로 출력합니다.
TCP, UDP 프로토콜은 출발지/목적지 IP와 포트를 모두 할당하고, ICMP, ESP 프로토콜은 IP만 할당합니다.
사용 예
-
PCAP 파일의 패킷 디코딩
pcapfile /opt/logpresso/data/capture.pcap | pcapdecodePCAP 파일에서 패킷을 읽어 이더넷, IP, 포트 헤더를 디코딩합니다.
-
디코딩 후 TCP 패킷만 필터링
pcapfile /opt/logpresso/data/capture.pcap | pcapdecode | search protocol == "tcp"PCAP 파일에서 패킷을 디코딩한 후 TCP 프로토콜인 레코드만 필터링합니다.
-
디코딩 후 목적지 포트별 패킷 수 집계
pcapfile /opt/logpresso/data/capture.pcap | pcapdecode | search protocol == "tcp" or protocol == "udp" | stats count by dst_port | sort -countTCP 또는 UDP 패킷을 디코딩하고, 목적지 포트별 패킷 수를 집계하여 내림차순으로 정렬합니다.
-
테이블에 저장된 패킷 디코딩
table duration=1h pcap_data | pcapdecode | fields _time, src_ip, dst_ip, src_port, dst_port, protocol테이블에 저장된 패킷 데이터를 디코딩하고, 주요 네트워크 필드만 추출합니다.
호환성
pcapdecode 명령어는 소나 4.0 이전 버전부터 제공되었습니다.