0

我一直在尝试制作一个可以提取所选磁盘映像中所有 jpeg 文件的程序。我知道我正在测试的磁盘映像中有 7 个 JPEG 文件,但我制作的代码只能提取其中的 2 个。我想问一下我可能做错了什么导致这种情况发生。

#!/usr/bin/python
import sys
from binascii import hexlify

def main(): 
    filename = 'disk.img'
    i = 1
    f = open(filename, 'rb')
    for data in iter(lambda:f.read(4), ""):
            if (data == '\xff\xd8\xff\xe1' or data == '\xff\xd8\xff\xe0'):
                print data.encode('hex')
                print f.tell()
            while(data != '\xff\xd9'):
                new_filename = "%03d.jpg" % i
                newfile = open(new_filename, 'ab')
                newfile.write(data)
                data = f.read(2)
            newfile.close() 
            print "%03d.jpg extracted!" % i             
            i = i+1
            #position = f.tell()

            #f.seek(position+16)


    f.close()
    print "EOF"


if __name__ == '__main__':
    main()
4

1 回答 1

1

现有的工具可以做到这一点。见http://www.cgsecurity.org/wiki/PhotoRec

我想示例代码的问题在于它一次读取 (2|4) 个字节,并且当 JPEG 不是从可被 (2|4) 整除的位置开始时,您将找不到它。(两个或四个取决于我们所处的循环)

于 2014-08-15T14:45:21.123 回答