首页/系统/Linux 运维命令速查/strings 从二进制提取可读字符串
文本处理77 条

strings 从二进制提取可读字符串

扫出二进制文件里的可打印字符串:查版本号、查编译路径、查误打包的密钥片段(确认后速处理),安全与排障两用。

Linux 运维命令速查系统更新于 2026-10-13

strings 是什么

strings 是 binutils 里的工具,扫描任意文件中的连续可打印字符并输出。默认把长度不少于 4 的 ASCII 序列当作一个字符串,所以压缩包、加密文件、可执行代码里的随机字节基本扫不出东西。它的实用价值集中在三类:看二进制里硬编码的版本号与编译路径,判断程序由什么工具链构建;排查发行包或镜像里是否误打包了口令、密钥、内网地址;分析崩溃转储、内存镜像里残留的可读内容。

基本信息

适用平台GNU/Linux(binutils)、macOS(随 Xcode 命令行工具)
语法strings [选项] 文件
默认阈值长度不少于 4 的连续可打印 ASCII 字符
常用选项-n 最小长度 -a 全文件扫描 -t 输出偏移 -e 指定编码
默认范围只扫描文件的已加载数据段
局限对压缩、加密内容无效,中文多字节串易被阈值过滤

典型使用场景

  • 查二进制里嵌的版本号与构建信息:确认装的 sshd、nginx 是哪个版本编译的。
  • 排查镜像或发布包里是否误打包了口令、token、内网域名等敏感串。
  • 分析 core dump 或崩溃现场,找出异常上报的 URL、库名、路径。
  • 配合 file 判断可疑文件类型:压缩包、脚本、ELF 一眼就能分辨。
  • 从固件、镜像里快速提取可读提示信息,定位厂商与版本线索。

常用写法

常用写法
strings /usr/sbin/sshd | grep -i -m5 openssh       # 查二进制里的版本串
strings -n 8 app.bin | grep -iE 'version|build'      # 提高长度阈值减少噪音
strings -a core.dump | grep -iE 'password|token' | head   # 全文件扫描排查泄漏
strings -e l data.bin | head                         # 按 UTF-16LE 提取(Windows 程序常用)
strings -t x app.bin | grep -i version               # 带十六进制偏移,便于回定位
file app.bin && strings -n 6 app.bin | head          # 先判类型再抽内容
strings -f /opt/app/bin/* | grep -i version          # 批量扫描并保留文件名前缀

关键选项对照

选项作用使用要点
-n N设置最小字符串长度默认 4,噪音大时提到 8 以上
-a扫描整个文件默认只扫数据段,代码段里的串会漏
-t x输出十六进制偏移定位到文件具体位置,便于进一步分析
-e l按 16 位小端编码提取Windows 产物里的宽字符串需要用这个
-f输出文件名前缀批量扫描多个文件时区分来源
--version查看自身版本不同 binutils 版本选项支持略有差异
用 strings 发现疑似凭据后,处置动作是把凭据视为已泄露并轮换,而不是「删掉文件重打包」了事;同时要回溯构建流程,找出它为什么会被打进制品,否则下次发布还会再来一遍。
对中文内容和 UTF-16 内容默认可能扫不出来:中文在 UTF-8 下是多字节编码,短串容易被 4 字符阈值过滤。可以降 -n 阈值或指定 -e 编码,再配合 grep 过滤。
字符串相同不代表来源唯一:同一个版本串可能来自被链接的第三方依赖。下结论前用 -t 偏移定位,并和 ldd、包管理器的文件清单交叉验证。

易错点

  • 对压缩包、加密文件直接 strings,得到的是压缩后的字节碎片,看起来几乎为空,容易误判为「没有敏感内容」;要先解压或解密再扫描。
  • 默认只扫描数据段,藏在代码段或自定义节区的硬编码串会漏掉;怀疑存在硬编码凭据时加 -a 全文件扫描。
  • 发现密钥后只清理文件而不轮换凭据,泄露窗口依然存在;正确顺序是轮换凭据、清理历史制品、修构建流程。
  • 把 strings 的原始输出整段贴进工单或聊天,可能连带把口令、内网地址暴露给更多人和系统;上报时只留必要片段并做脱敏。

数据来源与参考

  • man 1 strings(GNU binutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌