温馨提示×

debian strings支持哪些格式

小樊
55
2026-09-07 04:36:24
栏目: 智能运维

在 Debian(以及上游 GNU binutils)里,strings 命令本身并不是“支持某种文件格式”,而是从一个二进制/数据文件中提取可打印的字符串。不过,它确实对 目标文件格式(object file formats) 有识别能力,并且可以通过选项控制解析方式。

下面按常见分类说明。


一、strings 能直接识别的“文件格式”

strings 来自 binutils,底层使用 BFD(Binary File Descriptor)库,因此支持 BFD 支持的常见格式:

1. ELF(最常见)

  • Linux / Debian 下绝大多数可执行文件和库
  • 静态 / 动态 ELF
  • 内核模块(.ko)
strings /bin/ls

2. a.out

  • 老式 Unix 可执行格式(已基本不用)

3. COFF / PE

  • Windows 可执行文件(.exe、.dll)
  • 用交叉编译工具链生成的 PE 文件
strings program.exe

4. Mach-O(有限支持)

  • macOS / iOS 可执行文件
  • 取决于 Debian 上 binutils 的编译选项

5. 存档文件(ar / .a)

  • 静态库
  • strings 会扫描其中的目标文件
strings libfoo.a

二、strings 对“非标准格式”的处理

1. 原始二进制 / 任意数据

不依赖格式,直接扫描:

  • 磁盘镜像
  • 固件
  • 内存 dump
  • 网络抓包数据
strings firmware.bin

2. 文本文件

也可以跑,但意义不大(本身可读)


三、重要选项对“格式解析”的影响

-a / --all

  • 忽略文件格式
  • 把整个文件当原始数据扫描
strings -a unknown.file

当文件格式不被识别或损坏时,这个最有用

默认行为(不加 -a)

  • 只扫描 已初始化数据段
  • 对 ELF/PE 等格式更“干净”

四、编码相关(不是“格式”,但常被问)

strings 默认只认 ASCII / 单字节可打印字符

Unicode 支持

  • GNU strings 不支持 UTF-16 / UTF-32 直接提取
  • 可用:
strings -e l   # 16-bit little endian
strings -e b   # 16-bit big endian
strings -e L   # 32-bit little endian
strings -e B   # 32-bit big endian

例如 Windows 程序常见 UTF-16LE:

strings -e l program.exe

五、总结一句话

Debian 的 strings 支持 ELF、PE、COFF、a.out、Mach-O、ar 等 BFD 格式;
对任何未知格式都能用 -a 当原始二进制扫描字符串。

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

0 踩