相关文章推荐
稳重的八宝粥  ·  JS 如何把陣列 Array ...·  1 月前    · 
高大的小摩托  ·  gnu make - Makefile ...·  1 年前    · 
慈祥的数据线  ·  python - '>=' not ...·  1 年前    · 
酒量小的热带鱼  ·  SFFAI ...·  1 年前    · 

用Bash雕刻文件,用grep找不到16进制值FFD8或FFD9

1 人关注

我希望有人能帮助我解决我的文件雕刻脚本。 我想在一个原始格式的图像文件(.dd)中找到文件头和相应的页脚的十六进制值。

对于其他的页眉和页脚,我的脚本工作得很好,但对于JPG文件的页眉和页脚就不行。 FFD8和FFD9 以下是我目前的做法。

grep -obUaP "\xFF\xD8" image_file.dd

我想找回搜索到的字符串页眉和页脚的位置偏移量,以便以后用dd提取它们。 我把图像文件作为二进制文件用grep处理。

例如,当我拿着我的图案去寻找 JFIF 在图像中,通过这个搜索,我找到了很多匹配。

grep -obaUP "\x4A\x46\x49\x46" image_file.dd

but none with FFD8!

那么有没有人能够给我一个提示,为什么我不能找到这些简单的十六进制值?

5 个评论
123
对我来说,在没有看到文件的情况下不可能回答,但我猜想,这个字符串不在文件中。
你使用的是什么版本的 grep
I'm using grep (GNU grep) 2.25
这似乎在控制台工作,但我如何在我的shell脚本中实现这一点......我现在只得到了错误信息 *对不起,我是新手;)
@123 当我禁用我的locale设置时,(例如,我的 echo $LC_ALL 没有打印出任何东西)-- grep -obUaP "\xFF\xD9" file.jpg 打印出偏移量,例如。 [替换代码2]...同样的 grep ,在启用了本地语言的终端中,完全没有打印出来。当我在 grep 前加上 LC_ALL=C grep.... 时,它打印出同样的 14349:?? ......所以...:)- 这就是事实。
linux
bash
grep
xxd
Nelly
Nelly
发布于 2017-04-24
1 个回答
clt60
clt60
发布于 2017-04-24
已采纳
0 人赞同

Man grep说。

使用-a或在环境中设置LC_ALL='C'可能会有帮助。 环境,以便找到更多的匹配,即使这些匹配对于直接显示是不安全的

So, try: