我目前正在尝试解决法医文件搜寻培训问题。
给出了提示,有一个 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
选项将搜索起点更改为每个字节