温馨提示×

linux strings能提取什么内容

小樊
42
2026-09-08 11:42:23
栏目: 智能运维

在 Linux 中,strings 是一个常用命令,用于从二进制文件或其他非文本文件中提取可打印的字符串。下面从“能提取什么”和“常见用途”两方面说明。


一、strings 能提取什么内容

1. 可打印的 ASCII / 字符序列

strings 默认会扫描文件,找出连续的可打印字符序列(通常是长度 ≥ 4 的字符)。

例如可以从以下文件中提取:

  • 文件路径
  • 函数名
  • 变量名
  • 错误信息
  • URL、IP 地址
  • 配置参数

示例:

strings /bin/ls

可能看到:

Usage: ls [OPTION]... [FILE]...
%s: invalid option -- '%c'
https://www.gnu.org/

2. 程序中硬编码的字符串

包括:

  • printflog 中的提示信息
  • 宏定义中的字符串
  • SQL 语句
  • 密码或 token(如果明文写死)

示例:

strings app.bin | grep password

3. 符号与调试信息(视编译情况)

如果程序未完全剥离符号:

  • 函数名
  • 源文件名
  • 编译路径
strings a.out | grep "\.c$"

4. 资源或嵌入内容

如:

  • 嵌入的 HTML / JSON
  • 证书内容
  • 脚本片段
  • 图片中的文本(少量)

5. 指定字符集(Unicode 等)

strings 也支持:

  • UTF-8
  • UTF-16(Windows 程序常见)
strings -e l binary_file   # little-endian UTF-16

二、常见使用场景

1. 分析未知二进制

strings unknown.bin

2. 安全 / 逆向分析

  • 查找敏感信息
  • 判断文件类型
  • 分析恶意软件行为

3. 取证分析

  • 从内存镜像或磁盘镜像中提取文本

4. 快速查看程序内容

strings libxxx.so | less

三、常用参数

参数 说明
-n 指定最小字符串长度
-e 指定编码
-f 显示文件名
-a 扫描整个文件(默认)

示例:

strings -n 6 -f *.so

四、不能提取什么

  • 压缩或加密内容(除非已解密)
  • 纯二进制数据
  • 动态生成、未落盘的字符串

如果你有具体文件类型(如 ELF、exe、固件、内存 dump),我可以给你更针对性的用法。

0