从磁盘转储中提取 jpeg

Posted

技术标签:

【中文标题】从磁盘转储中提取 jpeg【英文标题】:Extracting jpegs from a disk dump 【发布时间】:2012-03-15 19:48:25 【问题描述】:

我从某人那里得到了一张 16GB 的存储卡,无法正常加载(要求重新格式化)。我正在尝试删除 jpeg。

我已经运行dd 将内容转储到文件中,效果非常好。该文件不会挂载和读取,因此内容在某种程度上已损坏。

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

在我编写一些代码来流式传输文件、找到偏移量并转储文件之前,有没有现有的方法可以做到这一点?我用简单的谷歌搜索找不到任何东西,但不想解决以前必须解决很多次的问题。

有没有人知道一些软件或一个像样的库(Python 会很好,因为我熟悉该语言,尽管任何事情都可以)可以轻松地让我提取 jpeg,或者我最好只编写自己编码?

【问题讨论】:

【参考方案1】:

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

对于这个问题有两个明显的选择。第一个是开源的photorec。第二个是商业工具Adroit Photo Forensics。我在很多场合都使用过这两种工具。 Adroit 将恢复碎片化的文件,并在消除误报方面做得更好,但价格昂贵。 photorec 很可能你会没事的。

【讨论】:

Photorec 很棒 - jpeg 提取器不是很好,而且我自己的代码太天真和糟糕 - 这太棒了!希望能找回所有的照片,目前看起来不错! 顺便说一句,对于以后发现这个问题的人来说,对卡使用 photorec 估计需要 2 小时,而对使用 dd 制作的副本运行它只需 20 分钟。 如果其他人正在阅读本文并且 PhotoRec 给您带来问题,也请尝试 Scalpel 或 Foremost。两者都可以通过 apt-get 在 Ubuntu 中安装。 不要使用最重要的。它没有维护。 Scalpel 是一个误报生成器。我们审查了各种程序,发现 PhotoRec 完成了其他程序所做的一切,并且误报率更低。【参考方案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 中的单个文件中然后 @987654325 @并将脚本放入当前目录,然后运行脚本python extract.py,jpegs就会跳转到当前文件夹中。

【讨论】:

工作并输出我期望找到的所有图像,但似乎也输出了一些实际上不是 jpeg 的额外文件。【参考方案3】:

好吧,经过大量搜索,我找到了这个:

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

它在 16GB 卡上发现了很多垃圾,我猜当你有那么多字节时,出现 FFD8 和 FFD9 的概率很高。到目前为止,它已经找到了 50,000 张图像,但其中许多只是巧合的 jpeg,而不是图像。

希望这可以帮助任何有编程倾向并尝试编写所有代码的人,即使在不需要时!

【讨论】:

【参考方案4】:

在windows中有一个程序FTK

http://accessdata.com/products/computer-forensics/ftk

另外,像 winhex 这样的取证编辑器很有趣 http://www.x-ways.net/winhex/index-e.html

在linux平台上,有一些forensic的发行版,有一套完整的forensic 工具 helix(必须搜索旧的免费版本) 坚 侦探套件

你必须添加图片文件,根据文件类型有浏览器功能

问候阿尔瓦罗

【讨论】:

【参考方案5】:

您可以使用有效的照片恢复软件轻松恢复所有无法访问的 jpeg 图像。由于该软件配备了先进和复杂的技术,因此它可以恢复原始文件格式的所有数据。

阅读更多:http://www.jpeg-recovery.org/undelete-lost-pct-images-after-cf-showing-memory-card-parameter-error-message

【讨论】:

以上是关于从磁盘转储中提取 jpeg的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 从 wikidata 转储中提取别名

PHP:如何从字符串转储中提取 JSON 字符串

您可以从 IBM PHD java 堆转储中提取字符串的值吗?

如何从正在运行的应用程序的堆转储中提取 java 类定义?

如何从核心转储文件中提取 AT_EXECFN

从 MySql 转储导入到配置单元