2014年10月19日 星期日

od - dump files in octal and other formats


od(octal dump)主要是用來將資料轉成可讀的格式(human-readable formats),預設顯示格式如同名稱,顯示8進位資料,顯示格式包含8/10/16進位,以及ASCII顯示格式。
brook@vista:~$ echo abc| od
0000000 061141 005143
0000004
brook@vista:~$ echo abc| od -o
0000000 061141 005143
0000004
brook@vista:~$ echo abc| od -d
0000000 25185  2659
0000004
jpr@jpr-Veriton-M4610:~$ echo abc| od -h
0000000 6261 0a63
0000004
brook@vista:~$ echo abc| od -c
0000000   a   b   c  \n
0000004
brook@vista:~$ echo abc| od -b
0000000 141 142 143 012
0000004
brook@vista:~$ echo abc| od -i
0000000   174285409
0000004
jpr@jpr-Veriton-M4610:~$ echo abc| od -l
0000000            174285409
0000004
brook@vista:~$ echo abc| od -s
0000000  25185   2659
0000004
brook@vista:~$ echo abc| od -x
0000000 6261 0a63
0000004

"a"的ascii值為,8/10/16進位值為97/61/141,所以有看到沒有參數和"-o"顯示一樣的內容,061141的10/16進位值為25185/H6261,看得出是一次顯示兩個byte,-b則是顯示一個byte,-h/-x一次顯示兩個byte的16進位,-d和-s一樣一次顯示兩個byte的10進位。
再來下面的例子是顯示address/offset的格式"-A",可以搭配"oxnd",o是8進位,d是10進位,d是16進位,n是不顯示address/offset。
brook@vista:~$ od -Ad sleep.sh
0000000  1647255843  1932488297  1752631912   543517801
0000016  1920213083  1562404213  1868827195  1819478282
0000032   544236901  1695091249   544172131  1701606183
0000048   824209509   660825459  1852793866   168442725
0000064
brook@vista:~$ od -Ao sleep.sh
0000000  1647255843  1932488297  1752631912   543517801
0000020  1920213083  1562404213  1868827195  1819478282
0000040   544236901  1695091249   544172131  1701606183
0000060   824209509   660825459  1852793866   168442725
0000100
brook@vista:~$ od -Ax sleep.sh
000000  1647255843  1932488297  1752631912   543517801
000010  1920213083  1562404213  1868827195  1819478282
000020   544236901  1695091249   544172131  1701606183
000030   824209509   660825459  1852793866   168442725
000040
brook@vista:~$ od -An sleep.sh
  1647255843  1932488297  1752631912   543517801
  1920213083  1562404213  1868827195  1819478282
   544236901  1695091249   544172131  1701606183
   824209509   660825459  1852793866   168442725

其餘參數包含"-N"讀幾個byte,與"-j"offset幾個byte,"-t"輸出格式顯示方式,"-t"可以搭配dfoux,後面再搭配數字,以一次幾個byte顯示。如
brook@vista:~$ od -An -N6 -t x1 sleep.sh
 23 21 2f 62 69 6e
brook@vista:~$ od -An -N6 -t x2 sleep.sh
 2123 622f 6e69
brook@vista:~$ od -An -N6 -t x4 sleep.sh
 622f2123 00006e69


我常拿od來產生random MAC,
brook@vista:~$ od -An -N6 -t x1 sleep.sh | tr ' ' ':' | cut -d':' -f2-7
23:21:2f:62:69:6e