在整个设备中搜索十六进制幻数

在整个设备中搜索十六进制幻数

我目前正在尝试解决法医文件搜寻培训问题。

给出了提示,有一个 LUKS 容器,我们需要找到 LUKS 标头才能继续下一个训练问题。

根据随问题提供的信息,可以使用这个幻数(十六进制)4c554b53babe 来识别标头,我现在正在整个设备中搜索这个幻数。

为此,我从

xxd -g0 -c 32 /mnt/luksTraining/training001.dd | grep -C 1 4c554b53babe

但后来意识到,这仅在标题未分成两行时才有效。例如,标题的前半部分位于行的最末尾,另一半位于下一行。

是否有一种“智能”方式来搜索特定的文件头?

答案1

是否有一种“智能”方式来搜索特定的文件头?

基本上,您正在搜索特定的字节串,因此最好直接搜索二进制数据而不是xxd输出,这可能会产生误报(以及潜在的误报),即:

grep -oba "$(printf '\x4c\x55\x4b\x53\xba\xbe')" /mnt/luksTraining/training001.dd

上面将输出给定字节串所在的training001.dd中的字节偏移量。

更多 grep 字节串的方法参见这个堆栈溢出问题

答案2

一些即兴的想法;没有一个会很快...

  • 将设备作为二进制文件打开并使用正则表达式(例如使用 python)
  • xxd使用 shell 循环迭代输出,使用-len-seek选项将搜索起点更改为每个字节

相关内容