strings 是 Linux 下一个非常常用的命令行工具,用来从一个文件(尤其是二进制文件)中提取可打印的字符串。下面从是什么、适用场景、典型用法、注意事项几个方面说明。
strings [选项] 文件
它会扫描文件中的连续可打印字符序列(默认长度 ≥ 4),常用于:
适用:
strings /bin/ls
strings ./app | grep "password"
✅ 常用于:
当程序 core dump 时:
strings core
可快速看到:
适用于:
strings firmware.bin | grep "admin"
可发现:
当文件不是纯文本时:
strings unknown_file
比 cat 更安全,不会输出乱码刷屏。
strings malware.bin | grep -E "http|/bin/sh"
例如:
strings data.dat | head
| 参数 | 作用 |
|---|---|
-n 6 |
只显示长度 ≥ 6 的字符串 |
-e |
指定编码(如 s=ASCII, l=16-bit) |
-a |
扫描整个文件(默认跳过某些段) |
-f |
显示文件名 |
-t x |
显示字符串偏移(十六进制) |
示例:
strings -n 8 -t x binary
❌ 不适合:
grep/awk)strings 适合“在不是文本的文件里,找人能看懂的内容”
如果你有具体使用场景(比如逆向、取证、CTF、运维),我可以给你更针对性的用法。