温馨提示×

如何过滤linux strings输出结果

小樊
37
2026-09-02 10:44:02
栏目: 智能运维

在 Linux 下,strings 命令用于从二进制文件或数据中抽取可打印字符串。实际使用中,常需要过滤输出结果,常见方法如下:


1. 使用 grep 过滤关键字

最常用方式,直接管道给 grep

strings file.bin | grep "error"

忽略大小写

strings file.bin | grep -i "error"

显示行号

strings file.bin | grep -n "main"

反向过滤(排除某些内容)

strings file.bin | grep -v "debug"

2. 使用正则匹配

strings file.bin | grep -E "func[0-9]+"

或只输出看起来像 URL 的:

strings file.bin | grep -E "https?://"

3. 限制字符串最小长度(-n

strings 本身支持过滤短字符串:

strings -n 8 file.bin

只显示长度 ≥ 8 的字符串,可减少噪音。


4. 指定字符集(减少乱码)

strings -e l file.bin   # 16-bit little endian
strings -e b file.bin   # 16-bit big endian
strings -e s file.bin   # 7-bit

5. 结合 awk / sed

只显示包含数字的

strings file.bin | awk '/[0-9]/'

提取特定列

strings file.bin | awk '{print $1}'

6. 去重并排序

strings file.bin | sort | uniq

或统计出现次数:

strings file.bin | sort | uniq -c | sort -nr

7. 输出到文件再分析

strings file.bin > strings.txt
grep "password" strings.txt

8. 实战示例

从二进制中提取可能的 IP:

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

提取函数名(假设以 _Z 开头,C++ mangled):

strings app | grep "_Z"

如果你有具体场景(比如逆向分析、日志提取、恶意样本),可以告诉我,我可以给你更针对性的过滤方案。

0