温馨提示×

linux strings能提取文字吗

小樊
40
2026-07-18 11:51:44
栏目: 智能运维

是的,Linux 的 strings 命令可以提取文件中的可打印字符串(文字),常用于从二进制文件、可执行文件、core dump 或数据文件中找出“看起来像文字”的内容。


一、strings 是做什么的?

strings 会扫描文件,提取长度大于等于一定值(默认 4)的可打印字符序列,并以换行形式输出。

常见用途:

  • 从二进制文件中找字符串
  • 分析程序里是否包含明文路径、URL、密码提示等
  • 逆向分析 / 取证分析
  • 查看 .so / 可执行文件 / 固件中的文本

二、基本用法

strings 文件名

示例:

strings a.out

输出类似:

/lib64/ld-linux-x86-64.so.2
Hello, world!
Usage: test <arg>

三、常用参数

1️⃣ 指定最小字符串长度

strings -n 6 文件名

只输出 长度 ≥ 6 的字符串。


2️⃣ 从特定位置开始扫描

strings -t x 文件名

十六进制偏移 显示字符串位置:

 3f0 /lib64/ld-linux-x86-64.so.2

也可用:

  • -t o:八进制
  • -t d:十进制

3️⃣ 扫描整个文件(不跳过某些段)

strings -a 文件名

strings --all 文件名

4️⃣ 从 stdin 读取

cat 文件名 | strings

四、典型使用场景

✅ 从二进制中找字符串

strings /bin/ls

✅ 查找是否包含敏感信息

strings app | grep -i password

✅ 分析 core dump

strings core.1234

✅ 查看 ELF 程序中的字符串

strings a.out | less

五、注意事项(很重要)

⚠️ 1. 只能提取“连续可打印字符”

  • 中文、UTF-8 多字节字符 可能不完整
  • 对纯英文、路径、URL 效果最好

⚠️ 2. 不是真正的“反编译”

  • 不能恢复源码
  • 只能看到字符串常量

⚠️ 3. 字符串可能被编译器优化掉

  • static char* 可能不出现
  • 字符串加密/混淆后无效

六、替代或补充工具

工具 用途
grep 文本文件搜索
xxd / hexdump 查看原始字节
objdump -s 查看 ELF 段
readelf 分析 ELF 结构
binwalk 固件/二进制分析

七、总结一句话

strings 可以提取文件中的文字(可打印字符串)
适合二进制、可执行文件、取证分析
不适合提取完整中文或加密内容

如果你有具体文件类型(比如 .bin.so.exe、中文文本、日志),我可以给你更精确的用法。

0