在 Debian(以及上游 GNU binutils)里,strings 命令本身并不是“支持某种文件格式”,而是从一个二进制/数据文件中提取可打印的字符串。不过,它确实对 目标文件格式(object file formats) 有识别能力,并且可以通过选项控制解析方式。
下面按常见分类说明。
strings 能直接识别的“文件格式”strings 来自 binutils,底层使用 BFD(Binary File Descriptor)库,因此支持 BFD 支持的常见格式:
.ko)strings /bin/ls
.exe、.dll)strings program.exe
.a)strings 会扫描其中的目标文件strings libfoo.a
strings 对“非标准格式”的处理不依赖格式,直接扫描:
strings firmware.bin
也可以跑,但意义不大(本身可读)
-a / --allstrings -a unknown.file
当文件格式不被识别或损坏时,这个最有用
-a)strings 默认只认 ASCII / 单字节可打印字符
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),我可以告诉你更合适的用法。