从二进制文件恢复图像

时间:2012-12-06 03:29:55

标签: python

目标是从二进制文件中提取图像。如何在二进制文件中搜索文件类型的标记,SOI和EOI。 常规find()函数似乎不起作用,因为我无法将二进制文件作为字符串加载。

2 个答案:

答案 0 :(得分:0)

您想要搜索流中的魔术字(而不是字符串)。

以下是这个想法:

从该文件中读取一个char(使用file.read(1)) 使用魔术字的队列长度,检查每次读取的队列

MAGIC_WORD = r'JPEG'  # it's example... just example
l = list(c for c in f.read(len(MAGIC_WORD)))
offset = 0
while True:
    if ''.join(l) == MAGIC_WORD:
        return offset
        offset += 1
        l.pop(0)
        l.append(f.read(1))

如果您觉得有必要......我的意思是,需要速度,请查看this wiki文章,使用更智能的算法,最后切换到c ++。

抱歉,我不知道任何提供这个的python库。祝你好运

答案 1 :(得分:0)

另一个想法:

如果你可以使用unix shell(而不是Python),你可以尝试使用unix管道并链接一些搜索工具(如grep和xxd)

cat yourbinfile | xxd -p | grep HEXMAGICWORD

其中HEXMAGICWORD是

echo jpeg | xxd -p

我对shell不太熟悉,所以这不是确切的答案。