Ubuntu strings 查看详细内容的实用指南
一 概念与安装
- strings 是 GNU Binutils 中的命令行工具,用于从二进制或文本文件中提取连续的可打印字符序列(默认长度至少为 4 个字符),常用于分析可执行文件、库、核心转储中的文本信息。大多数 Ubuntu 系统已预装;如未安装,可执行:
sudo apt update && sudo apt install binutils。strings 支持 ASCII 与多种 Unicode(UTF-16/UTF-32,含大小端) 编码,并可输出字符串在文件中的偏移位置,便于定位。
二 常用选项速览
- -a / --all:扫描整个文件,而非仅限目标文件的节区(section)。
- -f / --print-file-name:在每行输出前显示文件名(多文件时有用)。
- -n N / --bytes=N:设置最小字符串长度(默认 4)。
- -t d|x|o / --radix=d|x|o:在每行前显示偏移量,分别为十进制/十六进制/八进制;-o 等同于 -t o。
- -e s|S|b|l|B|L:指定编码:s=7-bit ASCII,S=8-bit ASCII,b=16-bit 小端 UTF-16,l=16-bit 大端 UTF-16,B=32-bit 小端 UTF-32,L=32-bit 大端 UTF-32。
- -w / --include-all-whitespace:保留换行、制表等空白字符。
- -s 分隔符:自定义输出字段分隔符(较少用)。
三 常见用法与示例
- 基本提取:
strings /bin/ls
- 指定最小长度:
strings -n 6 /bin/ls
- 显示偏移量(十进制/十六进制):
strings -t d /bin/ls 或 strings -t x /bin/ls
- 多文件并标注文件名:
strings -f /bin/* | grep -i copyright
- 指定编码(如 UTF-16):
strings -e l /path/to/binary(大端 UTF-16)
- 扫描整个文件(避免节区限制):
strings -a suspicious.bin
- 自定义分隔符:
strings -s '|' mybinary
- 与 grep/awk 组合过滤与统计:
- 过滤关键字:
strings /var/log/syslog | grep -i error
- 统计高频行:
strings app.log | sort | uniq -c | sort -nr | head
- 查看手册与版本:
man strings、strings --version
四 进阶场景
- 从内存镜像中读取字符串(需 root,谨慎操作):
sudo strings /dev/mem | less。此方式可查看物理内存中的可打印文本,但输出量大且可能包含敏感信息。
- 处理文本日志:strings 也能处理普通文本日志,但更常见的做法是直接用 grep/sed/awk;若日志中混入二进制数据,strings 可帮助“捞”出其中的可读片段。
五 实用建议
- 提高信噪比:用 -n 提高最小长度阈值,或用 -e 指定正确的字符编码,减少无关结果。
- 快速定位:结合 -t d/x 获取偏移量,再用
less 或 head/tail 分页查看,便于在文件中定位相关字符串。
- 多文件批处理:使用 -f 标注来源文件,便于追溯字符串出处。
- 输出控制:对大文件使用管道与分页工具(如
less、head、tail)避免刷屏。