”十六“進制查看器


hexdump

hexdump命令一般用來查看”二進制“文件的十六進制編碼,但實際上它的用途不止如此,手冊頁上的說法是“ascii, decimal, hexadecimal, octal dump“,而且它能查看任何文件,而不只限於二進制文件了。

 

規范的十六進制和ASCII碼顯示(Canonical hex+ASCII display)

root@new55 ~]# echo /etc/passwd | hexdump -C
00000000  2f 65 74 63 2f 70 61 73  73 77 64 0a              |/etc/passwd.|
0000000c

 

單字節八進制顯示(One-byte octal display) 

[root@new55 ~]# echo /etc/passwd | hexdump -b 
0000000 057 145 164 143 057 160 141 163 163 167 144 012                
000000c

 

單字節字符顯示(One-byte character display) 

0000000   /   e   t   c   /   p   a   s   s   w   d  \n                
000000c

 

雙字節十進制顯示(Two-byte decimal display) 

[root@new55 ~]# echo /etc/passwd | hexdump -d
0000000   25903   25460   28719   29537   30579   02660                
000000c

 

雙字節八進制顯示(Two-byte octal display) 

[root@new55 ~]# echo /etc/passwd | hexdump -o       
0000000  062457  061564  070057  071541  073563  005144                
000000c

 

雙字節十六進制顯示(Two-byte hexadecimal display) 

[root@new55 ~]# echo /etc/passwd | hexdump -x
0000000    652f    6374    702f    7361    7773    0a64                
000000c

 

[root@new55 ~]# echo /etc/passwd | hexdump -v 
0000000 652f 6374 702f 7361 7773 0a64          
000000c

 

od

[root@www ~]# od [-t TYPE] 文件
選項或參數:
-t  :后面可以接各種『類型 (TYPE)』的輸出,例如:
      a       :利用默認的字節來輸出;
      c       :使用 ASCII 字節來輸出
      d[size] :利用十進位(decimal)來輸出數據,每個整數占用 size bytes ;
      f[size] :利用浮點數值(floating)來輸出數據,每個數占用 size bytes ;
      o[size] :利用八進位(octal)來輸出數據,每個整數占用 size bytes ;
      x[size] :利用十六進位(hexadecimal)來輸出數據,每個整數占用 size bytes ;

 

請將/usr/bin/passwd的內容使用ASCII方式來展現

[root@www ~]# od -t c /usr/bin/passwd
0000000 177   E   L   F 001 001 001  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000020 002  \0 003  \0 001  \0  \0  \0 260 225 004  \b   4  \0  \0  \0
0000040 020   E  \0  \0  \0  \0  \0  \0   4  \0      \0  \a  \0   (  \0
0000060 035  \0 034  \0 006  \0  \0  \0   4  \0  \0  \0   4 200 004  \b
0000100   4 200 004  \b 340  \0  \0  \0 340  \0  \0  \0 005  \0  \0  \0
.....(后面省略)....
# 最左邊第一欄是以 8 進位來表示bytes數。以上面范例來說,第二欄0000020代表開頭是
# 第 16 個 byes (2x8) 的內容之意。

 

請將/etc/issue這個文件的內容以8進位列出儲存值與ASCII的對照表

[root@www ~]# od -t oCc /etc/issue
0000000 103 145 156 164 117 123 040 162 145 154 145 141 163 145 040 065
          C   e   n   t   O   S       r   e   l   e   a   s   e       5
0000020 056 062 040 050 106 151 156 141 154 051 012 113 145 162 156 145
          .   2       (   F   i   n   a   l   )  \n   K   e   r   n   e
0000040 154 040 134 162 040 157 156 040 141 156 040 134 155 012 012
          l       \   r       o   n       a   n       \   m  \n  \n
0000057
# 如上所示,可以發現每個字節可以對應到的數值為何!
# 例如e對應的記錄數值為145,轉成十進位:1x8^2+4x8+5=101

利用這個命令,可以將 data file 或者是 binary file 的內容數據給他讀出來喔! 雖然讀出的來數值默認是使用非文字檔,亦即是 16 進位的數值來顯示的, 不過,我們還是可以透過 -t c 的選項與參數來將數據內的字節以 ASCII 類型的字節來顯示, 雖然對於一般使用者來說,這個命令的用處可能不大,但是對於工程師來說, 這個命令可以將 binary file 的內容作一個大致的輸出,他們可以看得出東西的啦~ ^_^

如果對純文字檔使用這個命令,你甚至可以發現到 ASCII 與字節的對照表!

 

備注:

利用這個命令,可以將 data file 或者是 binary file 的內容數據給他讀出來喔! 雖然讀出的來數值默認是使用非文字檔,亦即是 16 進位的數值來顯示的, 不過,我們還是可以透過 -t c 的選項與參數來將數據內的字節以 ASCII 類型的字節來顯示, 雖然對於一般使用者來說,這個命令的用處可能不大,但是對於工程師來說, 這個命令可以將 binary file 的內容作一個大致的輸出,他們可以看得出東西的啦~ ^_^

如果對純文字檔使用這個命令,你甚至可以發現到 ASCII 與字節的對照表!

 

參考 http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager_3.php#od

       http://codingstandards.iteye.com/blog/805778


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM