温馨提示×

linux strings在什么场景用

小樊
55
2026-10-17 04:01:19
栏目: 智能运维

strings 是 Linux 下一个非常常用的命令行工具,用来从二进制文件(或任意文件)中提取可打印的字符串。下面是它的典型使用场景和说明。


一、基本作用

strings file

默认会输出文件中长度 ≥ 4 的可打印字符序列(ASCII 可见字符)。


二、常见使用场景

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

  • 查看程序里硬编码的字符串
  • 找:
    • 错误信息
    • 日志格式
    • 文件路径
    • URL / IP
    • 配置名
strings ./a.out

✅ 适合:

  • CTF
  • 逆向分析
  • 排查程序行为

2️⃣ 查看是否包含敏感信息

比如:

  • 密码
  • token
  • API key
  • 内网地址
strings app | grep -i password
strings app | grep -i http

⚠️ 注意:只是“可能”,不是解密


3️⃣ 判断文件类型 / 来源

有时文件没有扩展名:

strings unknown_file | head

可能看到:

  • ELF
  • GCC version
  • Python script
  • 编译路径

4️⃣ 分析崩溃或日志中的程序

当只有二进制、没有源码时:

  • 看错误信息来自哪个模块
  • 看版本号
strings binary | grep version

5️⃣ 取证 / 安全审计

  • 分析可疑程序
  • 查看是否调用外部服务器
  • 检查恶意样本
strings malware.bin | grep -E "http|/bin|/etc"

6️⃣ 查看库中导出的提示信息

比如:

strings libxxx.so

可以看到:

  • 支持的功能
  • 调试信息

7️⃣ 配合其他工具使用

strings file | less
strings file | grep -n "main"
strings file | awk '{print length, $0}' | sort -n

三、常用参数

-n 6        # 最少 6 个字符
-a          # 扫描整个文件(不只是数据段)
-e l        # 指定编码(l=16-bit little endian)
-f file     # 显示文件名

四、不适合的场景

❌ 不能:

  • 反编译
  • 恢复被删除内容(只能碰运气)
  • 解密加密字符串

五、一句话总结

当你“看不懂一个文件,但想知道里面写了什么字”的时候,就用 strings。

如果你有具体使用场景(比如 CTF、逆向、服务器排查),我可以给你更针对性的例子。

0 踩