在 Ubuntu(Linux)里,strings 命令用于从二进制文件中提取可打印字符串。常见的“过滤 strings 结果”方式有以下几种,按使用场景由简单到高级说明:
最常见方式,结合 grep 搜索特定字符串。
strings binary_file | grep "error"
忽略大小写:
strings binary_file | grep -i "error"
显示行号:
strings binary_file | grep -n "main"
例如只显示以 http 开头的字符串:
strings binary_file | grep '^http'
或包含版本号:
strings binary_file | grep -E '[0-9]+\.[0-9]+'
只显示长度 ≥ 6 的字符串:
strings -n 6 binary_file
某些二进制使用 UTF-16(Windows 常见):
strings -e l binary_file # little-endian UTF-16
strings -e b binary_file # big-endian UTF-16
显示字符串及其在文件中的偏移:
strings -t x binary_file
结合 grep:
strings -t x binary_file | grep "config"
strings binary_file | sort | uniq
只显示重复字符串:
strings binary_file | sort | uniq -d
strings binary_file > strings.txt
grep "password" strings.txt
提取二进制中的 URL:
strings app | grep -E 'https?://'
提取可能的函数名:
strings -n 5 app | grep -E '^[a-z_]+$'
如果你有 具体目标(比如逆向分析、日志提取、去噪、某种文件格式),可以告诉我,我可以给你更精确的命令。