温馨提示×

Ubuntu Strings 如何提取

小樊
39
2026-07-09 22:25:51
栏目: 智能运维

在 Ubuntu(以及大多数 Linux 发行版)中,strings 是一个常用的命令行工具,用于从二进制文件、库、固件、内存转储等中提取可打印的字符串。下面按常见用法系统说明。


一、什么是 strings

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

  • 查看 ELF / 可执行文件中的字符串
  • 分析 .so 动态库
  • 取证分析(固件、内存 dump)
  • 快速查看程序是否包含某些文本、路径、URL、密钥等

二、基础用法

1️⃣ 基本提取

strings 文件名

示例:

strings /bin/ls

输出类似:

Usage: %s [OPTION]... [FILE]...
GNU coreutils
ls

2️⃣ 指定最小字符串长度

默认是 4 个字符,可以修改:

strings -n 6 文件名

只显示长度 ≥ 6 的字符串。


3️⃣ 显示字符串在文件中的偏移

strings -t x 文件名     # 十六进制
strings -t d 文件名     # 十进制
strings -t o 文件名     # 八进制

示例:

strings -t x /bin/ls

输出:

 1234 /lib64/ld-linux-x86-64.so.2
 5678 Usage: ls

4️⃣ 从特定文件偏移开始扫描

strings -e l 文件名

-e 指定编码:

参数 含义
-e s 7-bit ASCII
-e l 16-bit little-endian
-e b 16-bit big-endian
-e L 32-bit little-endian

三、常见实用场景

✅ 1. 查找程序中的路径或 URL

strings app | grep "/home"
strings app | grep "http"

✅ 2. 查看动态库依赖

strings libfoo.so | grep ".so"

✅ 3. 从固件或未知格式文件中提取文本

strings firmware.bin

✅ 4. 从进程内存中提取(高级)

strings /proc/<pid>/mem

⚠️ 需要权限,且 /proc/<pid>/mem 访问受限。


四、结合其他命令使用

1️⃣ 排序并去重

strings file | sort | uniq

2️⃣ 输出到文件

strings file > strings.txt

3️⃣ 查看 ELF 文件中的字符串(更专业)

readelf -p .rodata 文件名

strings 更精确(只扫描 .rodata 段)。


五、安装 strings(一般已自带)

strings 属于 binutils

sudo apt install binutils

检查版本:

strings --version

六、注意事项

  • strings 不能解密、不能反编译
  • 不保证字符串有意义
  • 对加密或压缩数据效果有限
  • 对 UTF-8 支持有限(多字节字符可能被截断)

七、总结常用命令速查

strings file
strings -n 6 file
strings -t x file
strings file | grep keyword
strings file > out.txt

如果你有具体目标(如:ELF 文件 / 固件 / Java 程序 / Windows exe / Android so),可以告诉我,我可以给你更针对性的 strings 使用方案

0