温馨提示×

怎样用linux strings分析文件

小樊
48
2026-09-11 09:44:49
栏目: 智能运维

strings 是 Linux 下一个非常常用的命令行工具,用来从二进制文件或任意文件中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。它常用于分析可执行文件、日志、内存镜像、固件等。

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


一、基本用法

strings 文件名

示例:

strings /bin/ls

这会输出 /bin/ls 中所有长度 ≥ 4 的可打印字符串。


二、常用参数详解

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

默认最小长度是 4

strings -n 6 example.bin

只显示长度 ≥ 6 的字符串,减少噪声。


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

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

示例输出:

   1a2f usage: prog [options]
   1a45 main

适合配合 hexdump / gdb 使用。


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

strings -e s file.bin   # 7-bit ASCII(默认)
strings -e l file.bin   # 16-bit little-endian
strings -e b file.bin   # 16-bit big-endian
strings -e B file.bin   # 32-bit big-endian

用于分析:

  • Windows 程序(UTF-16)
  • 嵌入式固件
  • 跨平台二进制

4️⃣ 只扫描文件的某一部分

strings -n 5 file.bin | head -50

或结合 dd

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

5️⃣ 结合 grep 过滤关键信息

strings program | grep -i "password"
strings program | grep -E "http|ftp"

常用于:

  • CTF
  • 恶意软件分析
  • 逆向工程

三、实战场景示例

✅ 1. 分析未知二进制文件

file unknown.bin
strings unknown.bin | less

✅ 2. 查看程序中的错误信息

strings /usr/bin/curl | grep -i error

✅ 3. 提取固件中的 URL 或 IP

strings firmware.bin | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"

✅ 4. 分析 core dump / 内存文件

strings core.1234 | grep -i "segfault"

✅ 5. 提取隐藏在图片里的文本(隐写)

strings photo.jpg | less

四、strings 的局限性

⚠️ 注意:

  • 只能提取连续可打印字符
  • 加密 / 压缩内容无能为力
  • 不能还原逻辑结构

进阶工具:

  • binwalk(固件)
  • radare2 / ghidra(逆向)
  • xxd / hexdump(底层分析)

五、一句话总结

strings = 从“看不懂的文件”里找“看得懂的文字”

如果你有具体文件类型(如 ELF、PE、固件、图片、内存 dump),我可以给你更针对性的分析命令。

0