Bash 的文件雕刻无法使用 grep 找到十六进制值 FFD8 或 FFD9
File carving with Bash can't find hex values FFD8 or FFD9 with grep
我希望有人能帮我解决我的文件雕刻脚本。
我想在原始格式 (.dd) 的图像文件中找到文件头和相应的脚注作为十六进制值。
对于其他页眉和页脚,我的脚本运行良好但不适用于 JPG 文件的页眉和页脚:FFD8 和 FFD9
这是我目前的处理方式:
grep -obUaP "\xFF\xD8" image_file.dd
我想取回搜索到的字符串页眉和页脚位置的偏移量,以便稍后用 dd 提取它们。
我用 grep 将图像文件作为二进制文件处理。
例如,当我使用我的模式通过此搜索在图像中查找 JFIF 时,我发现了很多匹配项:
grep -obaUP "\x4A\x46\x49\x46" image_file.dd
但是 none 使用 FFD8!
那么有谁能给我提示为什么我找不到这些简单的十六进制值吗?
Man grep 说:
it can be helpful to use -a or to set LC_ALL='C' in the
environment, in order to find more matches even if the matches are unsafe for direct display
所以,尝试:
LC_ALL=C grep -obUaP "\xFF\xD9" file
在脚本中使用上面的内容,与命令行完全一样,只需在 grep
命令前面加上 LC_ALL=C
,与上面完全一样。
我希望有人能帮我解决我的文件雕刻脚本。 我想在原始格式 (.dd) 的图像文件中找到文件头和相应的脚注作为十六进制值。
对于其他页眉和页脚,我的脚本运行良好但不适用于 JPG 文件的页眉和页脚:FFD8 和 FFD9 这是我目前的处理方式:
grep -obUaP "\xFF\xD8" image_file.dd
我想取回搜索到的字符串页眉和页脚位置的偏移量,以便稍后用 dd 提取它们。 我用 grep 将图像文件作为二进制文件处理。
例如,当我使用我的模式通过此搜索在图像中查找 JFIF 时,我发现了很多匹配项:
grep -obaUP "\x4A\x46\x49\x46" image_file.dd
但是 none 使用 FFD8!
那么有谁能给我提示为什么我找不到这些简单的十六进制值吗?
Man grep 说:
it can be helpful to use -a or to set LC_ALL='C' in the environment, in order to find more matches even if the matches are unsafe for direct display
所以,尝试:
LC_ALL=C grep -obUaP "\xFF\xD9" file
在脚本中使用上面的内容,与命令行完全一样,只需在 grep
命令前面加上 LC_ALL=C
,与上面完全一样。