温馨提示×

linux strings支持哪些格式

小樊
43
2026-10-20 01:06:08
栏目: 智能运维

strings 是 Linux 下一个常用的命令行工具,用来从文件中提取可打印字符串。你问的“支持哪些格式”,可以从两个层面理解:输入文件格式 和 字符串/编码格式。下面分别说明。


一、strings 支持哪些“输入文件格式”

strings 本身不限制文件格式,它可以处理任意二进制或文本文件,常见包括:

1. 普通文本文件

  • .txt、.log、配置文件等
  • 会直接输出其中的可打印内容

2. 可执行文件

  • ELF(Linux 可执行文件、.so)
  • a.out
  • 静态/动态链接库

3. 二进制文件

  • 镜像文件(.img、.bin)
  • 固件(router firmware 等)
  • 数据库文件(如 SQLite)

4. 压缩包 / 归档文件

  • .zip、.tar、.gz
  • 注意:内容是压缩的,strings 只能看到压缩后的乱码或少量元信息

5. 磁盘 / 分区 / 内存镜像

  • /dev/sda
  • core dump 文件
  • 内存快照

✅ 总结:strings 支持“任意格式文件”,但它只认字节流,不解析文件结构


二、strings 支持哪些“字符串格式 / 编码”

1. 默认支持的字符集

默认情况下(GNU strings):

  • ASCII
  • 部分 Latin-1 / ISO-8859-1

2. 使用 -e 指定编码格式

GNU strings 支持以下编码:

参数 含义
-e s 7-bit ASCII(默认)
-e S 8-bit 单字节字符
-e b 16-bit Big Endian
-e l 16-bit Little Endian
-e B 32-bit Big Endian
-e L 32-bit Little Endian

示例:

strings -e l file.bin

3. UTF-8 / Unicode 支持

  • UTF-8 是 兼容 ASCII 的多字节编码
  • 默认 strings 能看到 UTF-8 中的 ASCII 部分
  • 对纯中文 UTF-8,可能需要:
    strings -n 2 file | iconv -f UTF-8 -t UTF-8
    
  • 对 UTF-16(Windows 常见):
    strings -e l file.exe
    

三、常用参数(顺带说明格式相关)

strings -n 6 file        # 最少 6 个可打印字符
strings -a file          # 扫描整个文件(不限于 .data 段)
strings -t x file        # 显示偏移(十六进制)
strings -e l file        # little-endian 16-bit

四、不支持 / 局限性

❌ 不支持:

  • 自动解压(zip/gzip)
  • 自动识别文件类型
  • 结构化解析(如 PE/ELF 段语义)
  • 中文等非 ASCII 的“智能识别”

五、典型用途示例

# 从二进制中找路径
strings /bin/ls | grep /etc

# 分析固件
strings firmware.bin | less

# 查找 Windows 程序中的字符串
strings -e l program.exe

如果你是想问 “能不能解析某种具体格式(如 PNG / ELF / PDF)”,可以告诉我具体文件类型,我可以更针对性说明。

0 踩