strings 是 Linux 下常用的命令行工具,用于从二进制文件或数据中提取可打印字符串。不同发行版使用的可能是 GNU 版 strings(最常见),也可能是 binutils 中的实现,选项大体一致。
以下是 GNU strings 常用及全部选项说明(基于 binutils / GNU strings):
strings [选项] 文件...
-n / --bytes=最小长度只显示长度不小于指定值的字符串
strings -n 6 file.bin
默认最小长度为 4
-a / --all扫描整个文件(而不是只扫描可加载段)
strings -a file
-e / --encoding=编码指定字符编码:
s:7-bit ASCII(默认)S:8-bit ASCIIb:16-bit BEl:16-bit LEB:32-bit BEL:32-bit LEstrings -e l file
-f / --print-file-name在每个字符串前显示文件名
strings -f *.bin
-o / --address=八进制显示字符串在文件中的偏移(八进制)
strings -o file
-t / --radix=进制以指定进制显示偏移:
o:八进制d:十进制x:十六进制strings -t x file
-T / --target=格式指定目标文件格式(如 elf32-i386)
-w / --include-all-whitespace将空白字符也视为可打印字符
--help显示帮助信息
--version显示版本信息
strings -n 8 -f -t x binary
含义:
如果你用的是 BusyBox 或 BSD strings,可用选项会更少(通常只有 -a、-n)。需要我对比不同版本或给实战例子也可以。