strings 是 Linux 下一个常用命令,用来从二进制文件、镜像、core dump、固件等“非纯文本”文件中提取可打印的字符串。解读它的输出,核心在于:知道你在看什么、哪些信息有用、如何结合上下文分析。
下面按“是什么 → 怎么看 → 实战技巧”来讲。
strings /bin/ls
输出类似:
Usage: %s [OPTION]... [FILE]...
ls (GNU coreutils) 8.32
%s: invalid option -- '%c'
/etc/passwd
这些内容来自:
⚠️ 注意:
重点关注:
例子:
/home/user/config.json
https://api.example.com/check
password=
Authorization: Bearer
这些通常最有用。
比如看到:
Usage: %s [options]
--help
--version
→ 说明这是一个命令行工具
看到:
mysql_query
SELECT * FROM users
→ 可能和数据库有关
噪音包括:
__libc_start_main)有用的是:
strings -n 8 binary
只显示 ≥8 字符的字符串
strings -t x binary
输出:
1a2f /lib/ld-linux.so.2
→ 字符串在文件中的十六进制偏移
常用于:
hexdump / gdbstrings -e l binary # 16-bit little endian
关注:
connect
socket
execve
/bin/sh
wget http://
可能说明:
admin
password
telnetd
192.168.1.1
→ 默认账号 / 服务
DEBUG=1
API_KEY=
SECRET=
→ 可能有硬编码密钥
strings binary | grep -i pass
strings binary | sort | uniq
file binary
strings binary
❌ 以为 strings = 反编译
✅ 它只是“文本提取”
❌ 看到字符串就当真
✅ 可能是死代码 / 测试字符串
❌ 忽略编码
✅ 中文/UTF-16 可能需要 -e
strings 输出 = 程序“说出来的话”
解读的关键不是“看全”,而是快速找到和人、配置、行为有关的线索。
如果你有具体文件或一段 strings 输出,我可以直接帮你逐行解读。