리눅스2023. 8. 2. 14:31

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/600133 (2017.6.19)

리눅스에서 바이너리 파일 내용을 16진수로 출력해야 할 경우 xxd라는 요긴한 도구가 있다. 아래의 예시를 보자.

# data.bin 파일 내용 출력
xxd data.bin
0000000: 1f8b 0800 ...
0000010: e103 6abb ...
...

위와 같이 입력하면 통상 많이 볼 수 있는 바이너리 파일 편집기와 유사한 형식으로 내용을 출력해 준다. 기본 출력은 2바이트씩 묶어서 공백으로 구분해서 보여주는데, 만약 각 바이트마다 공백으로 구분하려면 -g 옵션을 추가해 주자.

# data.bin 파일 내용 출력, 1바이트 단위로 구분
xxd -g 1 data.bin
0000000: 1f 8b 08 00 ...
0000010: e1 03 6a bb ...
...

위치 오프셋(offset)이나 ASCII 보기 등을 출력하지 않고 실제 파일의 내용만 16진수로 출력하고 싶을 경우에는 -p 옵션을 사용하면 되겠다.

# data.bin 파일 내용 출력, 연속된 16진수 형태
xxd -p data.bin
1f8b0800...

바이너리 파일에서 특정 16진수 패턴이 있는지 확인하고 싶을 때 grep 명령과 조합해서 편리하게 활용할 수 있다. 파일 크기가 크면 출력이 너무 길어질 수 있으므로 일치하는 부분만 출력하기 위해 grep에서 -o 옵션을 사용하는 것이 좋겠다.

# data.bin 파일 내용중에 0x0d 0x0a 존재 여부 확인
xxd -p data.bin | grep -o "0d0a"

728x90
Posted by 반달가면