strings
命令默认以简单的文本行形式输出二进制文件中的可打印字符串,但它本身不支持直接自定义输出格式(如指定列宽、添加分隔符等)。不过,你可以通过以下方法间接实现格式控制:
grep
/awk
/sed
进行过滤和格式化strings file.bin | awk '{printf "[String %d]: %s\n", NR, $0}'
输出效果:
[String 1]: Hello
[String 2]: SecretPassword
[String 3]: EOF
strings file.bin | awk 'length($0) > 10'
-n
)strings
允许通过 -n
指定最小字符串长度,但无法直接控制最大长度。
strings -n 8 file.bin # 只输出长度≥8的字符串
hexdump
或 xxd
获取偏移地址若需要字符串在文件中的偏移量(地址),使用 -t
选项:
strings -t x file.bin # 十六进制偏移量
strings -t d file.bin # 十进制偏移量
输出示例:
1234 Password123
5678 Key=Value
通过管道将结果传递给其他工具(如 jq
)生成结构化数据:
strings file.bin | jq -R -s 'split("\n") | map(select(. != ""))' > output.json
radare2
或 binwalk
替代如果需要更高级的二进制分析(如带偏移、编码、上下文),建议使用专业工具:
radare2 -q -c 'iz' file.bin # 显示字符串及偏移
binwalk -e file.bin # 提取嵌入的字符串和文件
strings
本身不支持,需依赖管道和文本处理工具(awk
/sed
)。-n
和 -t
控制基础输出,再通过脚本进一步格式化。radare2
)。如果有具体格式需求,可以提供更多细节,我可以帮你编写更精确的命令组合!