温馨提示×

linux strings在哪适用场景

小樊
44
2026-10-05 10:16:11
栏目: 智能运维

strings 是 Linux 下一个非常常用的命令行工具,用来从一个文件(尤其是二进制文件)中提取可打印的字符串。下面从是什么、适用场景、典型用法、注意事项几个方面说明。


一、strings 是什么

strings [选项] 文件

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

  • 二进制文件
  • 核心转储
  • 镜像文件
  • 日志/数据文件中“人能看懂”的内容

二、主要适用场景

1️⃣ 分析二进制程序(最常见)

适用:

  • 查看程序中硬编码的字符串
  • 排查是否包含敏感信息(密码、URL、路径)
  • 确认程序版本、编译信息
strings /bin/ls
strings ./app | grep "password"

✅ 常用于:

  • 安全审计
  • CTF
  • 逆向工程入门

2️⃣ 排查程序崩溃 / Core Dump

当程序 core dump 时:

strings core

可快速看到:

  • 出错时的日志
  • 函数名
  • 配置路径

3️⃣ 固件 / 镜像分析

适用于:

  • IoT 固件
  • 路由器镜像
  • 嵌入式系统
strings firmware.bin | grep "admin"

可发现:

  • 默认账号
  • API 接口
  • 调试信息

4️⃣ 日志或未知文件快速查看

当文件不是纯文本时:

strings unknown_file

比 cat 更安全,不会输出乱码刷屏。


5️⃣ 安全取证 / 恶意软件分析

  • 提取 C2 地址
  • 发现加密字符串
  • 查找可疑命令
strings malware.bin | grep -E "http|/bin/sh"

6️⃣ 排查“文件里到底有什么”

例如:

  • 压缩包损坏
  • 数据文件格式不明
strings data.dat | head

三、常用参数

参数 作用
-n 6 只显示长度 ≥ 6 的字符串
-e 指定编码(如 s=ASCII, l=16-bit)
-a 扫描整个文件(默认跳过某些段)
-f 显示文件名
-t x 显示字符串偏移(十六进制)

示例:

strings -n 8 -t x binary

四、不适合的场景

❌ 不适合:

  • 结构化文本解析(用 grep/awk)
  • 大文件全量分析(慢)
  • 加密内容(看不到明文)

五、一句话总结

strings 适合“在不是文本的文件里,找人能看懂的内容”

如果你有具体使用场景(比如逆向、取证、CTF、运维),我可以给你更针对性的用法。

0 踩