在 Linux 下,strings 和 od 都是用来“查看文件内容”的命令行工具,但用途、视角和输出方式完全不同。下面从几个维度对比说明。
strings作用:从二进制或任意文件中提取“可打印的字符串”
适合:快速看里面写了什么文字(如路径、函数名、错误信息)
od(octal dump)作用:以“八进制 / 十六进制 / 十进制 / 字符”等形式逐字节 dump 文件
适合:分析二进制结构、协议、编码、对齐、字节序
stringsstrings a.out
输出示例:
/lib64/ld-linux-x86-64.so.2
printf
Hello, world!
✅ 只显示连续的可见字符
odod -A x -t x1z a.out
输出示例:
0000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 >ELF............<
0000010 02 00 3e 00 01 00 00 00 00 10 40 00 00 00 00 00 >..>.......@.....<
✅ 显示每一个字节
| 场景 | 用哪个 |
|---|---|
| 看程序里有没有硬编码密码 | strings |
| 分析 ELF / 文件头 | od |
| 查报错信息来源 | strings |
| 看网络包 / 协议格式 | od |
| 快速扫一眼内容 | strings |
| 精确字节级分析 | od |
strings 常用strings -n 6 file # 最少 6 个字符
strings -e l file # 16-bit little endian
od 常用od -A d -t x1 # 十进制地址 + 十六进制
od -c file # 字符形式
od -t x2 # 16-bit hex
strings看“说了什么”,od看“怎么存的”
如果你愿意,我也可以:
xxd / hexdump 和它们的区别