温馨提示×

如何用linux strings提取字符串

小樊
48
2026-10-08 09:10:32
栏目: 智能运维

在 Linux 里,strings 命令用于从二进制文件、可执行文件、core 文件、数据文件中提取可打印的字符串(通常是 ASCII/Unicode 文本)。下面是常见用法和技巧。


一、基本用法

strings 文件名

示例:

strings /bin/ls

会输出 ls 中包含的可读字符串(路径、提示信息、函数名等)。


二、常用参数

1️⃣ 指定最小字符串长度(默认是 4)

strings -n 6 文件名

只显示长度 ≥ 6 的字符串,过滤掉短噪声。


2️⃣ 显示字符串在文件中的偏移地址

strings -t x 文件名   # 十六进制
strings -t d 文件名   # 十进制
strings -t o 文件名   # 八进制

示例:

strings -t x /bin/ls

输出类似:

1f3c /lib64/ld-linux-x86-64.so.2

3️⃣ 只扫描某一段(offset / 长度)

strings -e l 文件名   # 16-bit little endian
strings -e b 文件名   # 16-bit big endian
strings -e L 文件名   # 32-bit little endian

4️⃣ 从标准输入读取

cat 文件名 | strings

常用于管道:

grep -Rl "main" . | xargs strings

三、实战示例

✅ 提取 ELF 可执行文件中的字符串

strings -n 5 ./app

✅ 查找可能硬编码的密码 / URL / IP

strings app | grep -iE "password|http|192\.168"

✅ 结合偏移定位(逆向常用)

strings -t x -n 6 binary | grep "main"

✅ 从 core dump 提取信息

strings core.1234 | less

四、和 grep 搭配(最常用)

strings file | grep "error"
strings file | grep -i "token"

五、注意事项

  • strings 只提取可打印字符
  • 对加密/压缩数据效果有限
  • 对 Unicode 支持有限(可加 -e)
  • 不能反编译,只能“看文本痕迹”

如果你有具体场景(比如:

  • 逆向分析
  • 提权排查
  • 固件分析
  • CTF
  • 查后门

可以告诉我,我可以给你更针对性的 strings 用法。

0 踩