Mel*_*lab 6 linux disk-image block-device
假设我有一个块设备或一个图像文件。并且说我还有一个字节序列或一个字符串或一些搜索模式。如何获得这种模式或字符串出现的位置?有什么工具可以做到这一点吗?
这个问题有多个答案,具体取决于您想要搜索的内容。
\n\n如果您希望查找二进制文件中的所有字符串,则命令是strings:来自手册,
\n\n\n\n\n字符串(1)
\n\n姓名
\n\nstrings - 打印文件中可打印字符串。
\n\n.... 对于给定的每个文件,GNU字符串打印至少 4 个字符长(或下面选项给出的数字)的可打印字符序列,后面跟着一个不可打印的字符。默认情况下,它仅打印目标文件的初始化和加载部分中的字符串;对于其他类型的文件,它会打印整个文件中的字符串。
\n
如果您有兴趣在二进制文件中搜索二进制字符串,则可以使用bgrep(不在存储库中,据我所知):
\n\n\n\n\nbgrep 是一个用于搜索二进制文件中出现的二进制字符串的实用程序。顾名思义,它的界面和设计是根据无处不在的 \xe2\x80\x9cgrep\xe2\x80\x9d 命令建模的,该命令用于搜索文本文件中文本模式的出现。
\n
或者,您可以使用以下诡计:
\n\ncat YourFile | hexdump -C | grep YourPattern\nRun Code Online (Sandbox Code Playgroud)\n\n这使用hexdump:再次来自手册,
\n\n\n十六进制转储(1)
\n\n姓名
\n\nhexdump - ascii、十进制、十六进制、八进制转储
\n
我使用方便的-C格式:
\n\n\n-C规范的十六进制+ASCII 显示。以十六进制显示输入偏移量,后跟 16 个以空格分隔的两列十六进制字节,再后跟 %_p 格式的相同的 16 个字节,并用 \'\'|\'\' 字符括起来。
\n
虽然有些人更喜欢这种-c格式:
\n\n-c一字节字符显示。以十六进制显示输入偏移量,后跟每行十六个空格分隔的三列、空格填充的输入数据字符。
\n