strings 是 Linux 下一个非常常用的命令行工具,用来从二进制文件或任意文件中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。它常用于分析程序、排查问题、逆向分析、日志提取等场景。
下面从基本用法 → 常用参数 → 实际示例来介绍。
strings 文件名
示例:
strings /bin/ls
这会输出 ls 命令里所有可打印的字符串,比如路径、提示信息、错误信息等。
-n 指定最小字符串长度默认只显示长度 ≥ 4 的字符串。
strings -n 6 file.bin
只显示长度 ≥ 6 的字符串。
-a / --all 扫描整个文件默认 strings 可能只扫描某些段(对可执行文件)。
想扫描整个文件时用:
strings -a file
-e 指定字符编码常见取值:
s:7-bit ASCII(默认)S:8-bit ASCIIb:16-bit Big Endianl:16-bit Little EndianB:32-bit Big EndianL:32-bit Little Endian示例(提取 UTF-16 小端字符串):
strings -e l file.exe
-f 显示文件名当同时处理多个文件时,显示每个字符串来自哪个文件:
strings -f *.bin
输出示例:
a.bin: Hello
b.bin: World
-t 显示偏移地址-t x:十六进制-t d:十进制-t o:八进制strings -t x file
输出示例:
1a2f password123
grep 使用(最常见)strings file | grep -i password
从二进制中找密码相关字符串。
strings /usr/bin/python3 | grep "/usr"
strings core.dump | less
strings malware.bin | grep -E "http|cmd|exec"
strings image.jpg
(有些 CTF 题目会这么玩)
strings 只能提取明文字符串,加密或压缩内容看不到grep / less如果你愿意,我可以:
strings vs xxd / hexdump你想用在什么场景?