如何以十六进制代码搜索字节序列(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
之后您可以随时运行这些文件。