strings 是 Ubuntu / Linux 中一个常用的命令行工具,通常属于 binutils 软件包,用于从二进制文件、可执行文件、库文件或任意数据文件中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。
下面系统地介绍 strings 命令的常见用法和选项。
strings 文件名
示例:
strings /bin/ls
输出文件中所有长度 ≥ 4 的可打印字符串。
-n 指定最小字符串长度strings -n 6 file
只显示长度 ≥ 6 的字符串(默认是 4)。
-a / --all 扫描整个文件strings -a file
默认 strings 可能只扫描某些段(如 ELF 的数据段),-a 会扫描整个文件。
-f 显示文件名strings -f file1 file2
输出格式:
file1: string1
file2: string2
适合多个文件对比。
-e 指定字符编码strings -e l file # 16-bit little endian
strings -e b file # 16-bit big endian
strings -e s file # 7-bit ASCII(默认)
strings -e S file # 8-bit ASCII
strings -e U file # UTF-8
常用于分析 Windows 或嵌入式二进制。
-t 显示字符串偏移量strings -t x file # 十六进制
strings -t d file # 十进制
strings -t o file # 八进制
示例:
strings -t x /bin/ls
输出:
1234 /lib64/ld-linux-x86-64.so.2
--encoding 指定编码(新版)strings --encoding=s file
s:单字节l:UTF-16LEb:UTF-16BEu:UTF-8-T 指定文件类型(binutils 新版)strings -T elf32-i386 file
一般很少用,主要用于交叉分析。
--help 和 --versionstrings --help
strings --version
strings /usr/bin/python3 | grep error
strings suspicious.bin | less
strings image.jpg
strings binary | grep -i version
strings -n 8 file | grep -i password
安装:
sudo apt update
sudo apt install binutils
可以,但需要使用 UTF-8 或 Unicode 编码选项:
strings -e U file
如果你愿意,我也可以:
strings 和 grep / xxd / hexdump只要告诉我你的使用场景即可。