Linux 파일을 16진수로 출력하기 hexdump

linux Linux

hexdump 명령

파일을 8 진수나 16 진수의 정보로 출력하는 명령입니다.

명령 형식

hexdump [옵션] 파일…

명령 실행 예

실행 환경

이 글은 다음 환경에서 실행되었습니다.

$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

$ gdb
(gdb) show endian
The target endianness is set automatically (currently little endian)

16진수 출력 테스트를 위한 파일 작성

다음과 같이 테스트를 위한 데이터 파일을 작성해둡니다.

$ vi abc.txt
1234567890
abcdefghij
ABCDEFGHIJ
!@#$%^&*()

파일을 2바이트 16진수로 출력하기

옵션 없이 실행하면 2바이트 단위로 출력합니다. little endian 환경에서는 하위 주소의 바이트를 먼저 출력합니다. 주소를 의미하는 0000000는 상위 주소이고 0000001는 하위 주소입니다. 숫자 1의 ascii hex code는 0x31, 숫자 2의 ascii hex code는 0x32입니다. 0x32은 하위 주소 0000001, 0x31은 상위 주소 0000000에 저장되어있으며 하위 주소의 바이트를 먼저 출력하는 little endian이므로 지정된 단위(여기서는 2바이트) 안에서는 0x31, 0x32가 아닌 0x32, 0x31 순서로 출력됩니다.

$ hexdump abc.txt
0000000 3231 3433 3635 3837 3039 610a 6362 6564
0000010 6766 6968 0a6a 4241 4443 4645 4847 4a49
0000020 210a 2340 2524 265e 282a 0a29
000002c

AIX7.1 의 big endian 환경에서는 다음과 같이 2바이트 단위의 출력에서 상위 주소의 바이트를 먼저 출력합니다. IBM AIX OS에서의 16진수 출력 명령은 xxd입니다.

# gdb
(gdb) show endian
The target endianness is set automatically (currently big endian)
# xxd abc.txt
0000000: 3132 3334 3536 3738 3930 0a61 6263 6465  1234567890.abcde
0000010: 6667 6869 6a0a 4142 4344 4546 4748 494a  fghij.ABCDEFGHIJ
0000020: 0a21 4023 2425 5e26 2a28 290a            .!@#$%^&*().
タイトルとURLをコピーしました