HOME


可能な限りフリーのツールを使ったデータ復元手順

2004/9/9
2004/9/18 grep.exeで"@"を検索すると、出力結果が異常になるらしい点を追加
2004/11/3 ディレクトリエントリ、先頭クラスタなど用語の使い方について若干修正
2005/2/26 日本語Word文書の断片が、文字コード設定を[Unicode]にしたテキストエディタで読める可能性があることを追加。BMPのマーカー文字列を"BM6"から"BM"に修正。

これまではデータ抹消についての記事が多かったが、本稿では、できるだけフリーのツールを使って、ハードディスクや各種メディアのデータを復元する手順を考えてみよう。以下のツールは、すべてWindows上で動作するものだ。また、本稿では物理的に破損したハードディスクからのデータ復元は対象としていない。動作は正常だが、データが削除または抹消されているハードディスクなどから、何らかのデータを復元することが目的である。

なお、Step2以降では、ディスク内データの日本語文字コードはシフトJISである、と仮定している。

基本的な事項
抹消ツールによって上書きされた部分は、ソフトウェアを使う限り、どのような方法でも復元することはできない。
ソフトウェアを使ったデータ復元は、
・普通の削除やフォーマットが行われたデータ
または
・抹消ツールを使ったが、何らかの理由で上書きされなかったデータ
に対してのみ可能ということになる。


Step0 普通に接続してみる

ディスクを普通に接続して、エクスプローラで開いてみる。
何らかの事情で、使われていたそのままの状態になっているディスクもあり得る。普通にアクセスできるファイルがあれば、それをコピーした後、Step1以降(削除/フォーマット/抹消されたファイルの復元)に進む。


Step1 復元ツールを使って試す

用意するもの

復元 [注意] 下記の「復元」についての内容は、フリーソフトであったVer.4.2.8までについてのみ正しい。
作者 加藤 高明氏(Ver.4.2.8まで)
ダウンロード 商用化に伴いフリー版のダウンロードは終了

ファイナルデータ 試用版 (無料)
AOSテクノロジーズ株式会社
ダウンロード http://www.finaldata.ne.jp/down.html

Step1-1 「復元(Ver.4.2.8まで)」でスキャンする
これで見つかり、復元できれば最もコストがかからない。
しかし、「復元」で見つけられるのは、普通に「ごみ箱から削除」されたファイルだ。ファイルのサイズ情報をゼロにされ、データが存在する先頭クラスタ番号を消された状態のファイルは、まず見つけることができない。このようなファイルは、「復元」のウィンドウにファイル名だけ表示されるが、選択して[コピーして復元]をクリックしても、サイズ0のファイルができるだけである。

正しい抹消ツールというものは、
(1)ファイルのサイズ情報をゼロにする
(2)ファイル名の領域(ディレクトリエントリ)から、データが存在する先頭クラスタ番号を削除する。ファイルのデータが格納されていたクラスタに対応するエントリを、ファイルアロケーションテーブルからも削除する。クラスタとは、OSがディスクを管理するための最小単位で、1つ以上のセクタをまとめたもの。
(3)ファイルのデータ領域をゼロや乱数などで上書きする
の3つの処理すべてを行うのだが、まれに(3)の処理を行わないものがある。そのような不完全な抹消ツールで処理したディスクは、「復元」でスキャンしても何も見つからないかもしれないが、ファイナルデータのような商用の復元ツールを使うと、削除済みデータが見つかる可能性がある(当然だが「復元」を商用パッケージにしたものでは無理だ)。さらにStep2以降の、ディスクを直接ダンプするような方法をとれば、データ領域が上書きされていないわけだから、削除済みデータは確実に見つかる。

なお、上記の(3)だけ行い、(1)と(2)の処理を行わない抹消ツールも存在する。この場合はファイル名やフォルダ名だけ復元可能だが、データ自体は上書きされていて、復元はできない。
また、ファイル名を消去したり、ランダムな名前に置き換えたりする機能は、ツールによってあったりなかったりする。

「復元(Ver.4.2.8まで)」を使って何も見つからなければ、Step1-2へ。

Step1-2 ファイナルデータ 試用版でスキャンする
試用版は、スキャン機能に限り有償版と同じである(復元機能はない)。
これで復元する価値のあるものが見つかれば、有償版を購入して復元する。
本稿のタイトルが「可能な限りフリーのツールで...」となっているのは、この段階でデータが見つかれば、有償版の復元ツールを使いなさい、という流れになっているからだ。
ファイナルデータ 試用版で何も見つからなければ、Step2へ。

ファイナルデータは、Word、Excel、PowerPoint、HTMLなどのファイルを効率的に見つけることができるが、ただのテキストについては検出能力がほとんどない。そこでStep2ではテキストのデータや、テキストの部分を持つバイナリデータが残っていないかを調べる。


Step2 原始的な手段で試す

用意するもの
「低空飛行」はシェアウェアだが、それ以外はすべてフリー。どれもアーカイブを適当なフォルダに解凍すれば、使えるようになる。

低空飛行 1.21 (シェアウェア 1155円)
(ディスクダンプツール。Windows NT/2000/XPでフロッピー以外のディスクをダンプ表示するなら、これが必要)
作者 太田 巧氏
ダウンロード http://www.vector.co.jp/soft/win95/hardware/se072470.html

でぃす君 Ver 1.2 (ディスクダンプツール。Windows NT/2000/XPでは、フロッピーの内容しか表示できない。Windows 95/98/Meではハードディスクの内容を表示できる)
作者 内田 明宏氏
ダウンロード http://www.vector.co.jp/soft/dos/util/se013633.html

GNU utilities for Win32 (この中のdd.exeとgrep.exeを使う)
作者 Karl M. Syring氏
ダウンロード http://unxutils.sourceforge.net/

jstrings (バイナリファイルから文字列を抽出する)
作者 たかはしもとのぶ氏
ダウンロード http://www.monyo.com/technical/products/jstrings/

Bz (バイナリエディタ)
作者 兵藤 嘉彦氏 金子 政秀氏
ダウンロード http://www.vector.co.jp/soft/win95/util/se032859.html

バイナリエディタとしては、シンプルなものでよいという人にはBz。多機能のものがよい人は、"Stirling"(後藤和重氏) http://www.vector.co.jp/soft/win95/util/se079072.html がいいかもしれない。また、ハードディスク全体のイメージファイルを作ることになった場合は"dump4w"(K.Horishima氏)http://www.vector.co.jp/soft/win95/util/se230275.html がいいかもしれない。最大64GBのファイルを扱える。

Step2-1(A) でぃす君でざっと見てみる
Windows NT/2000/XPの場合、でぃす君で調べられるのはフロッピーだけである。
Windows 95/98/Meの場合は、でぃす君でハードディスクも調べることができる。
調べるディスクがAドライブであれば、以下のコマンドを実行する。

diskun a -p

-pは256バイト(1セクタの半分)ずつ表示するオプション。スペースキーで次の256バイトに移る。気長にスペースキーを押し、ディスクがゼロ(0x00)で上書きされたものか、1(0xff)で上書きされたものか、あるいは乱数で上書きされたものか、など概要を調べる。
-pを付けなければ、ダンプ表示は画面を流れていく。それをながめてディスクの状態を判断してもよい。

Step2-2へ。

Step2-1(B) 「低空飛行」でざっと見てみる
Windows NT/2000/XPでフロッピー以外のディスクをダンプ表示するなら、「低空飛行」を使うとよい。
「低空飛行」はシェアウェアだが、以下の操作は未登録状態でもできる。

  1. TEIKUU.exeをダブルクリックして「低空飛行」を起動し、[ファイル]-[セクタ読込]を選択する。

  2. [ドライブ]のリストから対象のドライブを選択し、[OK]をクリックする。
    選択したドライブの先頭セクタがダンプ表示される。

  3. [表示]-[指定セクタ]-[ジャンプ-DATA]を選択する。これによりディスクのデータ領域の先頭が表示される。

  4. [表示]-[次セクタ](Ctrl+N)で、次のセクタを表示できる。データ領域がゼロ(0x00)で上書きされたものか、1(0xff)で上書きされたものか、あるいは乱数で上書きされたものか、など概要を調べる。

Step2-2へ。


Step2-1を飛ばし、Step2-2でイメージファイルを作り、それをバイナリエディタで開いて調べるのもよい。そのあたりは自由だ。

Step2-2
ディスクのサイズが小さいか、または作業用に使えるハードディスクの空き容量が十分あれば、復元するディスクのイメージファイルを作る。ディスクに直接アクセスするよりも高速だからだ。
この作業にはGNU utilities for Win32に含まれているdd.exeを使う。dd.exeでのドライブ名の指定方法は変わっていて、普通のDOSコマンドであれば"c:"と指定するのを"\\.\c:"と指定しなければならない。

フロッピーなら

dd if=\\.\a: of=image

ハードディスク、MO、CFカードなどなら(Fドライブとすると)

dd if=\\.\f: of=image

のようにする。"image"がイメージファイルだ。ハードディスクからイメージファイルを作る場合、イメージファイルのサイズは非常に大きく(ハードディスク全体と同じサイズ)なる。作業領域の空き容量に注意すること。


「低空飛行」の[ファイル]-[ドライブイメージの保存]でも、ディスクのイメージファイルを作ることができる。

Step2-3へ。

Step2-3

ディスクは0x00または0xffで上書きされたものらしい場合
jstrings.exeを使って、何らかのデータが残っていないか調べる。

jstrings -l -m 1 --cp932 < image

文字コード種類に"--cp932"を指定するとシフトJIS文字列(ASCII文字列も含まれる)を抽出できる。"-l -m 1"は1文字以上マッチすれば表示するという指定。

何かありそうならStep2-4へ。検出結果が少なければ、バイナリエディタでイメージファイルを開き、検出された文字列を検索してもよい。

何も出力されなければ、あきらめる(ディスクダンプツールやバイナリエディタで、隅々まで調べてもよいが)。

ディスクは乱数で上書きされたものらしい場合
Step2-4へ。

Step2-4
grepは指定した文字列を検索するコマンドだ。以下のように実行する。

grep -a target-string image

"-a"はバイナリデータをテキストデータとして入力するというオプション。
ここでtarget-stringとは、あなたが興味を持つ文字列だ。
メールアドレスならば.jp、.comなどになる。
(注)grep.exeで"@"を指定すると、出力結果が異常になるようだ。

GNU utilities for Win32のgrepでは、シフトJISの文字列の中に結果がエラーになるものがある。わかっているものでは"ー"(長音)がある。したがって"サーバー"などを検索するとエラーになる。

幸運にも多くの文字列が検出されたなら、

grep -a target-string image > result.txt

とすればresult.txtに検出結果が保存される。


grepでは「正規表現」を使って、検索する文字列のパターンを指定できる。興味のある人は"grep 正規表現"のようなキーワードでGoogleするなどしてほしい。

特定の種類のファイルの一部などを探すなら、以下のような文字列が「マーカー」になる。
ファイル形式マーカー文字列
Word(.doc)Microsoft、Word、Document
など
Excel(.xls)Microsoft、Excel
など
PowerPoint(.ppt)Microsoft、PowerPoint
など
PDF%PDF
JPEGJFIF
GIFGIF89a
PNGPNG
BMPBM

一方テキスト形式のファイルの場合は、以下のような「マーカー」文字列がある。
ファイル形式マーカー文字列
RTF形式で保存した
Word文書(.rtf)
\rtf
ansicpg932
deflang
など
HTML<html、<meta、<body、<pなど、
HTMLタグの一部であればどれでも。

CSV形式で保存したExcelワークシート(.csv)は、保存されるのはセルのデータだけなので、「マーカー」といえるものは特にない。

あなたが興味を持つ文字列を次のようなテキストファイルにすると、効率がよくなる。ただしエラーになる可能性があるので、日本語の文字列は含めない方がよい。"@"も出力結果が異常になるようだ。
.jp
.com
Microsoft
JFIF
GIF86a
BM
 :

このファイルの名前をmarker.txtとして次のように実行する。

grep -a --file=marker.txt image > result.txt

marker.txtの文字列に一致する部分が、result.txtに保存される。
Step2-5へ。

Step2-5

補足
以上の手順は、自分で抹消処理したディスクが、確実に抹消されているかを検証する目的にも応用できる。フリーの抹消ツールを新たに作ろうという人も、最低限この程度の検証を行ってから、公開していただきたいと思う。


グリーンハウスの変換アダプタは、1台でIDE(2.5インチ/3.5インチ)と
SATAの両方に対応するお買い得品

HOME

Copyright (C) Cybernetic Survival Network. All Rights Reserved.