我正在linux上搜索二进制文件中的模式,我不确定是否应该使用“grep”或“strings”命令来解析文件。我可以这样做:文件和字符串上的grep之间的区别?
grep *pattern* *file*
或
strings *file* | grep *pattern*
哪个更稳健?
我正在linux上搜索二进制文件中的模式,我不确定是否应该使用“grep”或“strings”命令来解析文件。我可以这样做:文件和字符串上的grep之间的区别?
grep *pattern* *file*
或
strings *file* | grep *pattern*
哪个更稳健?
在我看来,cat --show-nonprinting
更适合这项任务
cat --show-nonprinting | grep pattern
或者
cat -v | grep pattern
这与“字符串”解决方案的行为不同。 'cat -v | grep'匹配整行,由'\ n''字符分隔(取决于二进制文件,整个文件可能是单个“行”)。 'strings'在一个单独的行上显示每个连续的可打印字符组。 – 2014-11-04 07:16:13
@KeithThompson很容易修复,'tr'[:cntrl:]''\ n'',如果内存服务仍然比字符串更快 – 2014-11-04 07:34:17
也不是理想的。 'grep'是一个面向行的工具,对大二进制blob来说它是一个糟糕的选择,但'strings'有已知的安全漏洞。然而,它将会以“grep”可以使用的形式提取内容。 – 2014-11-03 18:32:39
有没有其他的命令行工具,你可能会建议? – Cala 2014-11-03 18:36:42
@CharlesDuffy:我的理解是'strings -a'避免了安全漏洞。 – 2014-11-04 07:14:30