2012-02-25 50 views
3

我有一个16GB的存储卡不能正常加载(要求重新格式化)。我试图让jpegs关闭它。从磁盘转储提取jpeg

我运行了dd将内容转储到一个出色的文件。该文件将不会被安装并被读取,因此内容在某种程度上已被破坏。

在十六进制编辑器中打开转储显示那里有数据,并且通过查找jpeg(FFD8和FFD9)的开始和结束标记,我已经能够手动提取前3个JPEG文件。

在我去写一些代码来传输文件之前,找到偏移量并转储这些文件,有没有现成的方法来做到这一点?我找不到任何简单的谷歌搜索,但不想解决之前必须解决的问题。

有没有人知道任何一些软件或一个体面的图书馆(Python会很好,因为我熟悉的语言,但任何事都可以),这将很容易让我提取JPEG,或者我最好只写代码我自己?

回答

4

你想要一台计算机取证雕刻工具。

这个问题有两个明显的选择。首先是开源photorec。第二个是商业工具Adroit Photo Forensics。我在很多场合都使用过这两种工具。 Adroit将恢复分散的文​​件,并消除误报,做得更好,但它很有价值。 photorec很可能会很好。

+0

Photorec是辉煌的 - jpeg提取器不是很好,我自己的代码太幼稚可怕 - 这真棒!希望把所有的照片都回来,看起来不错! – 2012-02-26 18:12:24

+0

顺便说一句,对于未来的人来说,找到这个,使用photorec对卡估计将需要2个小时,运行它对使用dd制作的副本只有20分钟。 – 2012-02-26 18:13:05

+2

很高兴为你效劳! – vy32 2012-02-27 02:14:15

0

好了,经过一番搜索,我发现这一点:

http://www.digiater.nl/openvms/decus/vmslt02a/net/jpeg-extractor.html

这是发现大量垃圾的16GB的卡上,我猜的FFD8和FFD9显示出来的概率高,当你有很多字节。到目前为止,它已经发现了50,000张图片,但其中很多图片只是巧合的,并不是图片。

希望这可以帮助任何有编程倾向的人,即使在不需要的时候也会尝试对所有代码进行编码!

2

下面是我写这样做使用python程序,它读取包含图像数据并将其分离成单独文件的文件。

import hashlib 

inputfile = 'data.txt' 
marker = chr(0xFF)+chr(0xD8) 

# Input data 
imagedump = file(inputfile, "rb").read() 

imagedump = imagedump.split(marker) 

count=0 
for photo in imagedump: 
    name = hashlib.sha256(photo).hexdigest()[0:16]+".jpg" 
    file(name, "wb").write(marker+photo) 
    count=count+1 
    print count 

该脚本使用他们的sha256摘要命名找到的图像,并且它找到的所有照片都将被转储到当前目录中。

这是一种方式,你可以测试脚本,看它是否工作正常:类型cd ~/images/然后使该文件夹mkdir test然后转储一些JPEG文件到同一个文件中的目录cat *.jpg > ./test/data.txt然后cd test,把脚本到当前目录,然后运行脚本python extract.py,jpegs将跳转到当前文件夹中。

+0

工作并输出我期望找到的所有图像,但似乎也输出了一些实际上不是jpeg的额外文件。 – kenny 2016-08-09 21:59:30