在 Linux 下,strings 命令用于从二进制文件或数据中抽取可打印字符串。实际使用中,常需要过滤输出结果,常见方法如下:
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"
strings file.bin | grep -E "func[0-9]+"
或只输出看起来像 URL 的:
strings file.bin | grep -E "https?://"
-n)strings 本身支持过滤短字符串:
strings -n 8 file.bin
只显示长度 ≥ 8 的字符串,可减少噪音。
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
awk / sedstrings file.bin | awk '/[0-9]/'
strings file.bin | awk '{print $1}'
strings file.bin | sort | uniq
或统计出现次数:
strings file.bin | sort | uniq -c | sort -nr
strings file.bin > strings.txt
grep "password" strings.txt
从二进制中提取可能的 IP:
strings app | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
提取函数名(假设以 _Z 开头,C++ mangled):
strings app | grep "_Z"
如果你有具体场景(比如逆向分析、日志提取、恶意样本),可以告诉我,我可以给你更针对性的过滤方案。