ブログ

ファイルの中身を16進数で表示する方法

at_shiita.ishigaki
2021年12月22日 9時19分

本ブログでは以下のコマンドで作成したa.outを使用します。

[armadillo ~]# apt install gcc
[armadillo ~]# cat hello.c
#include <stdio.h>

int main(void)
{
  printf("Hello World\n");
  return(0);
}
[armadillo ~]# gcc hello.c
[armadillo ~]# ls a.out
a.out

ファイルの中身を16進数で表示するにはhexdumpコマンドを使用します。
※ここでは例として、a.outの先頭100バイトを16進数で表示します。

[armadillo ~]# head -c 100 a.out | hexdump
0000000 457f 464c 0101 0001 0000 0000 0000 0000
0000010 0003 0028 0001 0000 03fd 0000 0034 0000
0000020 1b40 0000 0400 0500 0034 0020 0009 0028
0000030 001d 001c 0001 7000 0580 0000 0580 0000
0000040 0580 0000 0008 0000 0008 0000 0004 0000
0000050 0004 0000 0006 0000 0034 0000 0034 0000
0000060 0034 0000                              
0000064

ファイルの中身を16進数で表示すると同時にASCII文字を表示するには-Cオプションを使用します。

[armadillo ~]# head -c 100 a.out | hexdump -C
00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  03 00 28 00 01 00 00 00  fd 03 00 00 34 00 00 00  |..(.........4...|
00000020  40 1b 00 00 00 04 00 05  34 00 20 00 09 00 28 00  |@.......4. ...(.|
00000030  1d 00 1c 00 01 00 00 70  80 05 00 00 80 05 00 00  |.......p........|
00000040  80 05 00 00 08 00 00 00  08 00 00 00 04 00 00 00  |................|
00000050  04 00 00 00 06 00 00 00  34 00 00 00 34 00 00 00  |........4...4...|
00000060  34 00 00 00                                       |4...|
00000064

表示するバイト数を指定するには-nオプションを使用します。

[armadillo ~]# hexdump a.out -n 100
0000000 457f 464c 0101 0001 0000 0000 0000 0000
0000010 0003 0028 0001 0000 03fd 0000 0034 0000
0000020 1b40 0000 0400 0500 0034 0020 0009 0028
0000030 001d 001c 0001 7000 0580 0000 0580 0000
0000040 0580 0000 0008 0000 0008 0000 0004 0000
0000050 0004 0000 0006 0000 0034 0000 0034 0000
0000060 0034 0000                              
0000064

先頭を読み飛ばすには-sオプションを使用します。
※ここでは例として、先頭50バイトを読み飛ばし、50バイト目から100バイト目を表示しています。

[armadillo ~]# hexdump a.out -n 50 -s 50
0000032 001c 0001 7000 0580 0000 0580 0000 0580
0000042 0000 0008 0000 0008 0000 0004 0000 0004
0000052 0000 0006 0000 0034 0000 0034 0000 0034
*
0000064