> 文本处理与搜索 > strings

strings: 从二进制文件中提取字符串

strings 命令是一个从二进制文件(可执行文件、库文件等)中提取人类可读文本字符串的工具。它在程序调试、恶意软件分析或快速检查未知文件内容时非常有用。

概述

二进制文件由计算机直接执行的0和1代码组成,用普通文本编辑器打开时会显示乱码。`strings` 命令会查找并提取二进制文件中连续4个或更多可打印字符,以文本形式呈现。通过它,可以识别二进制文件中包含的错误消息、文件路径、URL、配置值等有用信息。

主要特点

strings 命令的主要特点如下:

  • 从二进制文件中提取人类可读的字符串。
  • 默认查找连续4个或更多可打印字符。
  • 支持多种字符编码(如 ASCII, UTF-16)。
  • 有助于识别程序使用的库名称或配置信息。

strings 的应用领域

strings 不仅仅用于文件查看,还可以在多种领域发挥作用。

  • 恶意软件分析: 从恶意软件二进制文件中提取C&C服务器地址、文件名、API调用等信息。
  • 调试: 查找可执行文件中包含的错误消息或调试字符串,以解决问题。
  • 未知文件分析: 当文件扩展名不明确时,通过 strings 查看内部文本,推断文件性质。

主要选项

strings 命令的主要选项已按目的分组。

1) 提取选项

2) 帮助

生成的命令:

请尝试组合命令。

描述:

`strings` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 strings 命令的各种使用示例来熟悉其功能。

从二进制文件中提取基本字符串

strings /usr/bin/top

从 `/usr/bin/top` 二进制文件中提取符合默认设置(4个或更多字符)的字符串。

仅提取更长的字符串

strings -n 8 /usr/bin/top

使用 `-n` 选项提取8个或更多字符的字符串。

同时输出字符串和十六进制偏移量

strings -t x /usr/bin/top

使用 `-t x` 选项同时输出每个字符串在文件中开始的十六进制偏移量。在二进制分析时非常有用。

与管道符 (|) 结合使用

strings /usr/bin/top | grep error

从 `/usr/bin/top` 文件中提取并查看包含 `error` 的字符串。

提取 UTF-16 编码字符串

strings -e l /path/to/binary

使用 `-e` 选项提取 UTF-16 编码字符串。`l` 表示小端字节序,`b` 表示大端字节序。

安装

strings 是 `binutils` 软件包的一部分,默认包含在大多数 Linux 发行版中。无需单独安装。

Debian/Ubuntu

sudo apt update
sudo apt install -y binutils

RHEL/CentOS/Fedora

sudo dnf install -y binutils

提示与注意事项

总结了使用 strings 命令时需要注意的事项。

提示

  • `strings` 比直接在二进制文件上运行 `cat` 提供更清晰、更有用的信息。`cat` 会直接输出二进制文件内容,可能导致终端显示混乱。
  • 提取的字符串可能包含换行符或空格,因此可以与 `grep`、`awk` 等通过管道连接,进一步处理以获得更有用的结果。

相关命令

功能上相似或经常一起使用的命令。


相同类别命令