在字符流中搜索子字符串

在字符流中搜索子字符串

如何以十六进制代码搜索字节序列(FEEDFEED00000002)并显示该序列后的 1000 个字节?

这是我在 Linux 分区上寻找的丢失文件的开头。此命令以十六进制代码输出硬盘内容:

sudo cat /dev/sda1 | hexdump -v -e '"" 1/1 "%02X" ""'
# output is FF45D5003E... etc

我需要在输出中搜索 FEEDFEED00000002。

答案1

grep 可以搜索二进制模式,它可能比检查 hexdump 的输出更有效,后者大约大 3 倍:

grep -b `echo -e "\xFE\xED\xFE\xED.."` /dev/sda1 | cut -d: -f1 >offsets

将为您提供字节偏移量;然后您可以使用以下方式提取 1k 块

for o in `cat offsets`
do
    dd if=/dev/sda1 of=block.{$o} bs=1 count=1000 skip=$o
done

这将为每个匹配的偏移量创建一个文件。hexdump之后您可以随时运行这些文件。

相关内容