od
1. 命令作用
od命令可以把文件的内容以字节块的形式展示,可以让我们看到文件的二进制数据。
2. 展示格式
od命令是一行一行展示文件内容的,每一行的展示格式如下:
偏移量 字节块1 字节块2 字节块3……
偏移量是使用8进制表示的整数,代表当前展示的是文件中第几个字节开始的,默认偏移量是从0开始
每一个字节块的长度默认是C语言short int类型的字节长度,一般是两个字节,用8进制数表示,默认一行展示16个字节。
3. 选项
3.1. -w[n] 或 --width[-n]
设置od命令一行展示的字节个数,默认是16,如果指定了选项,但是没有给出n,那么是32字节
3.2. --endian=order
当od命令一个字节块包含多个字节的时候,字节展示的顺序,order有大端方式(big)和小断方式(little)。
3.3. -A radix 或 --address-radix=radix
设置偏移量的显示格式,radix有如下选择:
- d:十进制
- o:8进制(默认)
- x:十六进制
- n:不显示偏移量
3.4. -t type 或 --format=type
指定字节块的展示样式,od是按照字节块展示数据的,那么一个字节块是展示成字符,十进制数字,还是浮点数呢?需要我们指定。
type的取值:
- a:以字符形式展示数据,一个字节一组,且只看低7位组成的ASCII的值,如果是可打印的字符,那么对应的字符,有些字符会换成字符的名称展示,例如如果是空格,打印sp,如果是换行打印nl,是0字节则打印nul;
- c:一个字节一组,如果是可打印的字符,那么打印其ASCII的值,否则如果可以表示成使用反斜杠转义的C语言风格的字符,则转义后打印(例如换行就打印为\n),否则使用3位8进制数字表示这个字节。
- d:有符号十进制整数,4个字节一组。
- u:无符号十进制整数,4字节一组。
- f:浮点数,8个字节一组
- o:8进制整数,4字节一组
- x:十六进制,4个字节一组。
除了a和c以外,剩下的type取值的中字节块包含的字节数可以使用一个是进制数来指定,例如我想让文件内容显示为十进制,但是想一个字节一组,即一个字节显示为一个十进制整数,可以使用-t d1,其中1个字节,刚好数C语言中的char类型的字节长度,也可以写成-t dc
其他情况类似,字节个数和对应的替换字符如下:
- c:char 1字节
- s:short 2字节
- I: int 4字节
- L: long 8/4字节
- F:float 4字节
- D: double 8字节
- L:long double 10/12字节
还有一些快捷选项:
- -a,等于 -t a
- -b,等于 -t o1
- -c,等于 -t c
- -d,等于 -t u2
- -f,等于 -t fF
- -i,等于 -t dI
- -l,等于 -t dL
- -o,等于-t o2
- -s,等于 -t d2
- -x,等于 -t x2