我一直在尝试制作一个可以提取所选磁盘映像中所有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()
答案 0 :(得分:1)
现有工具。见http://www.cgsecurity.org/wiki/PhotoRec
我认为示例代码的问题在于它一次读取(2 | 4)个字节,当JPEG没有从(二个|四个)可分割的位置开始时,你赢了# 39;找不到它。 (两个或四个取决于我们所处的循环)