2012-02-25 56 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