まくろぐ

Linuxコマンド: ファイルの内容を8進数や16進数でダンプする (od)

更新:
作成:

od コマンドの基本(8 進数でダンプする)

od (octal dump) コマンドを使用すると、ファイルの内容を 8 進数や 16 進数でダンプすることができます。

ファイル内容を 8 進数でダンプする
$ od sample.jar | head -5
0000000 045520 002003 000024 000010 000010 122216 037257 000000
0000020 000000 000000 000000 000000 000000 000024 000000 042515
0000040 040524 044455 043116 046457 047101 043111 051505 027124
0000060 043115 106505 005313 030302 042420 001767 103771 040374
0000100 072502 121341 133273 020473 145340 106255 044315 007207

先頭のカラムはアドレスを示しています。

アドレスの後ろからは、6 文字ずつに区切って 8 進数のデータが並びます。 8 進数では 1 文字が 3 ビットなので、6 文字で最大 18 ビットを示すことができますが、od コマンドの出力では、その内の 16 ビット(= 2 バイト)を使用しています。 頭の 2 ビットは必ず 0 でパディングされているので、各カラムの先頭の数字は 0 か 1 になります(アスキーコードのテキストなら必ず 0 でしょう)。

上記の例では、1 行ごとに、16 バイト(2 バイト x 8)ずつ出力しています。

ファイルの内容を 16 進数でダンプする

od コマンドはデフォルトでは 8 進数でダンプしますが、-x オプションを付けると 16 進数でダンプすることができます。

$ od -x sample.jar | head -5
0000000 4b50 0403 0014 0008 0008 a48e 3eaf 0000
0000020 0000 0000 0000 0000 0000 0014 0000 454d
0000040 4154 492d 464e 4d2f 4e41 4649 5345 2e54
0000060 464d 8d45 0acb 30c2 4510 03f7 87f9 40fc
0000100 7542 a2e1 b6bb 213b cae0 8cad 48cd 0e87

od の出力フォーマットを変更する

下記の例では、od コマンドの出力フォーマットをオプションで変更しています。

$ od -t x1 -Ax sample.jar | head -5
000000 50 4b 03 04 14 00 08 00 08 00 8e a4 af 3e 00 00
000010 00 00 00 00 00 00 00 00 00 00 14 00 00 00 4d 45
000020 54 41 2d 49 4e 46 2f 4d 41 4e 49 46 45 53 54 2e
000030 4d 46 45 8d cb 0a c2 30 10 45 f7 03 f9 87 fc 40
000040 42 75 e1 a2 bb b6 3b 21 e0 ca ad 8c cd 48 87 0e

各オプションは次のような意味を持っています。

  • -t x1 … 16 進数で 1 バイトごとに
  • -Ax … アドレス表示を 16 進数で

関連記事

まくろぐ
サイトマップまくへのメッセージ