温馨提示×

linux strings支持哪些文件格式

小樊
35
2026-09-23 18:34:01
栏目: 智能运维

strings 是 Linux 下一个常用命令,用来从二进制或非文本文件中提取可打印的字符串。关于它“支持哪些文件格式”,可以从两个层面理解:


一、从实现原理看:几乎支持所有文件

strings 本身不关心文件格式,它做的是:

  • 按字节扫描文件
  • 提取连续的可打印字符(默认长度 ≥ 4)
  • 输出这些字符

✅ 因此,理论上支持所有文件格式,包括:

  • 可执行文件(ELF、PE、Mach-O)
  • 动态库(.so、.dll)
  • 压缩文件(.zip、.tar、.gz)
  • 镜像文件(.iso、.img)
  • 数据库文件
  • 日志、core dump
  • 任意二进制文件

二、从“识别与更好支持”的角度看

部分 strings 实现(如 GNU strings)可以识别常见对象文件格式,并进行更合理的提取:

1️⃣ GNU strings 支持的对象格式

使用 strings 时,它可识别以下格式(通过 objdump/BFD 支持):

  • ELF(Linux 可执行文件和库)
  • a.out
  • COFF / PE(Windows)
  • Mach-O(macOS)
  • 档案文件(ar / .a 静态库)

可通过选项控制:

strings -a file        # 扫描整个文件(不依赖格式)
strings file           # 仅扫描已识别的数据段

三、常见使用场景对应的文件

文件类型 是否可用 strings
可执行文件 ✅
动态库 ✅
文本文件 ✅(但没必要)
图片(jpg/png) ✅(可能提取到元数据)
视频文件 ✅
加密文件 ❌(无明文字符串)
压缩包 ✅(部分明文)

四、注意事项

  • 默认只输出 ASCII 可打印字符
  • UTF-8 / 中文可能需要:
    strings -e S file
    
  • 对大文件建议加 -n 控制最小长度:
    strings -n 6 file
    

总结

strings 不限制文件格式,任何文件都能用;它只是“扫字符”,不是“解析格式”。

如果你有具体文件类型(比如 APK、PDF、Docker 镜像),我可以告诉你更实用的用法。

0 踩