温馨提示×

怎样使用linux strings提取字符串

小樊
37
2026-09-14 14:34:30
栏目: 智能运维

在 Linux 中,strings 命令用于从二进制文件(或任意文件)中提取可打印的字符串,常用于分析程序、排查文本、逆向工程等。

下面从基本用法 → 常用参数 → 实战示例逐步说明。


一、基本用法

strings 文件名

示例:

strings a.out

作用:
a.out 中提取所有长度 ≥ 4 的可打印字符串(默认最小长度通常是 4)。


二、常用参数详解

1️⃣ 指定最小字符串长度(-n

strings -n 6 example.bin

只显示长度 ≥ 6 的字符串,过滤掉无意义的短字符。


2️⃣ 显示字符串在文件中的偏移地址(-t

strings -t x file.bin   # 十六进制偏移
strings -t d file.bin   # 十进制偏移
strings -t o file.bin   # 八进制偏移

示例输出:

    1024 /lib64/ld-linux-x86-64.so.2
    2048 usage: prog [options]

3️⃣ 指定字符编码(-e

strings -e l file.bin   # 16-bit little endian
strings -e b file.bin   # 16-bit big endian
strings -e S file.bin   # 8-bit字符(默认)

常用于:

  • UTF-16 字符串(Windows 程序)
  • 跨平台二进制分析

4️⃣ 从标准输入读取

cat file.bin | strings

适合管道处理。


5️⃣ 只扫描某一段(配合 dd

dd if=file.bin bs=1 skip=1024 count=4096 | strings

三、实战示例

✅ 1. 查看程序中的提示信息

strings /bin/ls | grep -i error

✅ 2. 查找硬编码的 IP / 域名

strings app | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
strings app | grep -E "https?://"

✅ 3. 分析恶意样本

strings malware.bin -n 8 -t x

✅ 4. 提取 Windows exe 中的中文(UTF-16)

strings -e l program.exe

四、常见问题

❓ 为什么提取不到字符串?

可能原因:

  • 字符串被加密 / 压缩
  • 长度小于默认阈值(加 -n 3
  • 使用了非 ASCII 编码(换 -e

❓ strings 能还原源码吗?

❌ 不能
只能看到:

  • 字符串常量
  • 函数名(若未 strip)
  • 错误信息

五、总结速查表

strings file                 # 基本提取
strings -n 6 file            # 最小长度
strings -t x file            # 偏移地址
strings -e l file            # UTF-16
strings file | grep xxx      # 配合搜索

如果你有具体文件类型(ELF / PE / 固件 / 日志)或目标(找密码、找 URL、逆向),我可以给你更针对性的命令。

0