• ファイルを16進数でダンプする方法

    時々使うのでメモ。
    PNGファイルの場合、先頭から8byteに以下のようにヘッダーが入っている。 これを使って、検証しておく。

    #16進数
    89 50 4E 47 0D 0A 1A 0A
    #10進数
    137 80 78 71 13 10 26 10
    

    odコマンドを使ってファイルをダンプする

    今回は、odコマンドを使ってダンプする。

    デフォルトでダンプした場合

    • 8進数で表示される。
    • 0000000のファイルオフセットも8進数で表示される。
    # -N 9: 先頭の9byteを表示
    $ od -N 9 sample.png 
    0000000 050211 043516 005015 005032 000000
    0000011
    

    16進数でダンプする場合

    • デフォルトはリトルエンディアンで表示される。
    • エンディアンを切り替える場合は、オプションを指定する。
    # -t x: 16進数で表示
    $ od -N 9 -t x sample.png 
    0000000 474e5089 0a1a0a0d 00000000
    0000011
    
    # --endian=big: ビッグエンディアンで表示
    $ od -N 9 -t x --endian=big sample.png
    0000000 89504e47 0d0a1a0a 00000000
    0000011
    

    byteを変えてダンプする場合

    # 1byte
    $ od -N 9 -t x1 sample.png
    0000000 89 50 4e 47 0d 0a 1a 0a 00
    0000011
    
    # 1byte(10進数)
    # d1だとINT8が使われる。
    $ od -N 9 -t d1 sample.png
    0000000 -119   80   78   71   13   10   26   10    0
    0000011
    
    # 1byte(10進数)
    # d1だとUnsigned INT8が使われる。
    $  od -N 9 -t u1 sample.png
    0000000 137  80  78  71  13  10  26  10   0
    0000011
    
    # 4byte
    $ od -N 9 -t x4 sample.png
    0000000 474e5089 0a1a0a0d 00000000
    0000011
    
    # 8byte
    $ od -N 9 -t x8 sample.png
    0000000 0a1a0a0d474e5089 0000000000000000
    0000011
    

    終わりに

    似たようなコマンドで、hexdumpやxxdのコマンドもある。
    本当に時々使う。。

    参考

    comments powered by Disqus