unpack
바이너리 필드의 바이트 배열을 인덱스별 개별 필드로 분해합니다. 고정 길이 바이트 배열을 수치 특징 벡터로 변환하여 머신러닝 모델 입력으로 활용할 때 사용합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 미지원 |
문법
unpack field=FIELD
옵션
field=FIELD- 바이트 배열로 분해할 바이너리 필드 이름
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
b00 | 32비트 정수 | 0번째 바이트의 부호 없는 정수 값 (0~255) |
b01 | 32비트 정수 | 1번째 바이트의 부호 없는 정수 값 (0~255) |
| ... | 32비트 정수 | ... |
bNN | 32비트 정수 | NN번째 바이트의 부호 없는 정수 값 (0~255). 최대 100번째 바이트까지 처리합니다. |
바이트 인덱스는 두 자리 십진수로 표현합니다. 예를 들어 0번째 바이트는 b00, 9번째 바이트는 b09, 10번째 바이트는 b10입니다.
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 40820 | unpack 명령어에 field 옵션을 지정하세요. | field 옵션이 지정되지 않은 경우 |
런타임 오류
해당 사항 없음
설명
unpack 명령어는 지정한 필드의 바이트 배열(byte[])을 각 바이트 위치별로 분리하여 b00, b01, ... 형식의 개별 필드로 출력합니다. 각 바이트는 부호 없는 정수(0~255)로 변환됩니다.
최대 100바이트까지 처리하며, 바이트 배열 길이가 100을 초과하면 처음 100바이트만 분해합니다.
지정한 필드가 바이트 배열(byte[]) 타입이 아닌 경우 해당 레코드는 변환 없이 그대로 통과합니다.
similar-docs 명령어와 함께 사용하면 TLSH 해시의 바이트 벡터로 유사 문서를 탐색할 수 있습니다.
사용 예
-
TLSH 해시를 바이트 벡터로 분해
table duration=1d malware_samples | eval hash_bytes = fromhex(tlsh_hash) | unpack field=hash_bytes | fields b00, b01, b02, b03, b04tlsh_hash필드의 16진수 문자열을 바이트 배열로 변환한 후, 첫 5바이트를 개별 필드로 분해합니다. -
바이트 벡터를 이상탐지 모델 입력으로 활용
table duration=1d binary_logs | unpack field=payload | anomalies b00, b01, b02, b03, b04, b05, b06, b07payload바이트 배열의 첫 8바이트를 분해하여 이상탐지 분석을 수행합니다.
호환성
unpack 명령어는 소나 4.0.2308.0 버전부터 제공되었습니다.