温馨提示×

linux strings怎么用才高效

小樊
38
2026-09-02 10:48:05
栏目: 智能运维

strings 是 Linux 下从二进制/数据文件中提取可打印字符串的常用工具,用得好可以很快定位信息,用不好很容易刷屏或漏内容。下面从高效用法角度系统讲一下。


一、基本用法(别只敲 strings file

strings file

这是最低效的玩法,因为:

  • 默认只扫 7 字节以上 的可打印串
  • 不区分代码段 / 数据段
  • 输出巨大,难以分析

二、高效核心参数(重点)

1️⃣ 控制最小字符串长度(减少噪音)

strings -n 8 file

✅ 推荐:

  • 二进制分析:6~10
  • 日志/配置提取:4~6

2️⃣ 指定字符编码(非常重要)

strings -e l file   # 16-bit little endian
strings -e b file   # 16-bit big endian
strings -e s file   # 7-bit ASCII

常见场景:

  • Windows / UTF-16:-e l
  • 固件 / 嵌入式:常混用

3️⃣ 只扫描特定段(ELF 超重要)

strings -a file        # 扫描整个文件(慢但全)
strings file           # 只扫加载段(快)

✅ 分析程序行为时:

  • 默认(不 -a)更快
  • 找隐藏字符串才用 -a

4️⃣ 显示字符串偏移(逆向/取证必备)

strings -t x file   # 十六进制偏移
strings -t d file   # 十进制偏移

例子:

strings -t x -n 6 binary | grep PASS

可直接拿偏移去 objdump / gdb


三、组合技(高效实战)

✅ 1. 快速定位关键字

strings -n 6 binary | grep -i "password\|token\|key"

✅ 2. 结合 less(防止刷屏)

strings -n 8 binary | less

搜索:/keyword


✅ 3. 从内存/core dump 提取

strings -n 6 -e l core.dump

✅ 4. 从固件提取配置

strings -n 4 firmware.bin | grep -E "ip=|port=|user="

四、和别的工具配合(质的提升)

strings + grep + xxd

offset=$(strings -t x bin | grep "secret" | awk '{print $1}')
xxd -s 0x$offset -l 64 bin

strings + objdump

strings -t x bin | grep main
objdump -d bin | less

五、性能建议(大文件必看)

❌ 不要:

strings 2G_file | grep xxx

✅ 应该:

strings -n 10 -a 2G_file > strings.txt
grep xxx strings.txt

或:

strings -n 10 2G_file | rg xxx

rggrep 快非常多)


六、常见误区

误区 正确做法
只默认用 strings -n / -e
认为 strings 能看所有字符串 加密 / 压缩看不到
不看偏移 逆向时必看
在大文件直接 grep 先导出

七、什么时候不该用 strings?

  • 加密数据
  • 压缩资源(png/zip)
  • 高度混淆代码

这时应该用:

  • binwalk
  • radare2 / ghidra
  • ent(熵分析)

如果你有具体场景(比如:逆向、CTF、固件、日志、内存分析),我可以给你一套针对性的 strings 用法模板

0