USBフラッシュメモリーのデータ復元検証【RecoveryFox AI編】
目次
はじめに
いつもブログをご覧いただきありがとうございます。
ミジンコに転生したIPUSIRONです😀
本記事はWonderFox様製品を提供していただき作成しています。ただし、記事内容は筆者独自の視点に基づく考察です。
RecoveryFox AIとは?
RecoveryFox AIは、WonderFox Soft, Inc.が開発している、Windows向けのAI搭載データ復元ソフトです。
誤削除やごみ箱クリア後などで失われた写真・動画・文書を復元することを目的としています。
内部ディスクに加え、HDD/SSD/USBフラッシュメモリ/SDカードなどの外部デバイスにも対応します。
プレビューや、元のファイル名・フォルダ構造の保持など使い勝手に配慮した機能を備えます。
最新情報については、公式サイト(https://www.wonderfox.jp/)でご確認ください。
ファイルを削除しても復元できる理由【PCの基本の復習】
ファイルの「削除」は実体を即時消去せず、参照情報を無効化して空き領域として扱います。
上書きされるまでデータは残り、復元の余地が生まれます。
復元ソフト(今回はRecoveryFox AI)は、残っているデータから復元を試みます。
本実験の目的と範囲
範囲
「USBフラッシュメモリー上のファイルを削除 → ごみ箱を空にする → 復元」というシナリオに限定します。
確認したいこと
- 「削除→ごみ箱クリア」後でも、クイックスキャンで復元できるか
- 復元物が内容的に同一か⇒SHA-256のハッシュ値で確認
- メタデータ(最終更新日時など)はどの程度保持されるか
テスト環境
- OS:Windows 10
- バージョン 22H2 (OSビルド 19045.6093)
- ツール:RecoveryFox AI
- バージョン:1.0
- 媒体:USBフラッシュメモリー
- Mentor Media U02-003
- MSFTNAKTM1UG8G180818AO
- 容量:8GB
- ファイルシステム:FAT32
- SGで頂いたもの。





復元先は必ず別ドライブに設定します。上書きを避けるためです。
テストデータの作成
1:テスト用フォルダーとファイルを用意する
まずデスクトップ直下に"Akademeia_RecoveryTest"フォルダーを作成し、その中に以下のファイルを配置します。
- test_日本語.txt(短文)
- test_english.txt
- photo_日本語.jpg(小さめ)
- video_sample.mp4(数十Mバイト)
- mixed content.docx(テキスト数行+画像1枚貼り付け)
2:USBフラッシュメモリーにコピーする
ステップ1で作成した"Akademeia_RecoveryTest"フォルダーをコピーしておきます。
USBフラッシュメモリーをマウントし、ドライブ配下にペーストします。
これで実験用の削除ファイルの準備ができたことになります。
3:削除前のハッシュ+タイムスタンプをCSVで記録する
PowerShellを起動し、USBフラッシュメモリーのドライブに移動します。
その後、以下のコマンドを実行します(2行目以降のコマンドは長いですが、見やすさのために改行されているだけで、実際には1コマンドです)。
- Get-FileHash:ハッシュ算出
- Get-ChildItem:ファイル一覧・時刻取得
- Export-Csv:CSV出力
- -Encoding UnicodeオプションだとUTF-16LEになり、Excelで開いたとき日本語が文字化けしにくい。しかし、列分割されなくなる。
- そこで-Encoding Defaultにしている。これならWindowsの既定コードページ(日本語環境ならCP932/Shift-JIS)になり、列分割される。
- @(…) は配列サブ式で、Get-ChildItem の結果を先に配列へ確定させる。
- これで書き出し中に新規作成されるCSVが列挙に混入してロックされる問題を回避できる。
> Set-Location F:\Akademeia_RecoveryTest # ←USBフラッシュメモリーの実ドライブレターが「F」だったとき
> @( (Get-ChildItem -File) ) | ForEach-Object {
$h = Get-FileHash -Algorithm SHA256 -LiteralPath $_.FullName
[PSCustomObject]@{
Name = $_.Name
Length = $_.Length
CreationTime = $_.CreationTime.ToString('o')
LastWriteTime = $_.LastWriteTime.ToString('o')
SHA256 = $h.Hash
}
} | Export-Csv -NoTypeInformation -Encoding Default "..\baseline_$(Get-Date -f yyyyMMddHHmmss).csv"
これで上位(USB直下)に、CSVファイルが作成されます。以下はExcelで開いたところです。

ファイル名 | 最終更新日時(LastWriteTime) | 元ハッシュ |
---|---|---|
mixed content.docx | 2025-08-17T22:48:18.0000000+09:00 | 14A252345FC22FABF632FDD14639A5972FD5E46945C602CA3D9E2A4261ADF6F7 |
photo_日本語.jpg | 2020-12-11T14:25:52.0000000+09:00 | 45D4E7FA370F772557EB25BDAED3298AD66D38F7A04D6CB9150A6813930AF309 |
test_english.txt | 2025-08-17T23:54:14.0000000+09:00 | 8648D1ACB8723D5F41C94417F2A26108CDB4985D02330E6995FF915B9CB480FE |
test_日本語.txt | 2025-08-17T23:54:08.0000000+09:00 | 077C771EF66ECDF1FC361014C45F67AAF61664F38B3115805AA7517F7B735DC7 |
video_sample.mp4 | 2025-05-25T13:03:32.0000000+09:00 | EA3AF4327C291B2321DBC7A24BFF716DED036FC9E574613C723BFB885F9F0369 |
検証
「5データ削除⇒ゴミ箱削除⇒RecoveryFox AIでクイックスキャン⇒復元」の流れで進めていきます。
1:「5データ削除⇒ゴミ箱削除」まで実行し、データを削除する
上記5ファイルを選択して、右クリックから削除します。
次に、ごみ箱を空にします(完全削除)。


2:RecoveryFox AIを起動する

3:USBフラッシュメモリーを対象にして、クイックスキャンする
※デフォルトではクイックスキャン後にAIスキャンが実行されます。

今回はAIスキャンを検証していないので、一時停止で止めます。
「クイックスキャン」>「Akademeia_RecoveryTest」を選びます。すると、削除データとファイル名が一致するものは、4ファイルが見つかりました。

その4ファイル以外のチェックは外して、[データ復元]ボタンを押します。
※ファイル名に日本語や空白半角が入っていても文字化けすることなく表示されていました。

すると、復元先フォルダーの指定を促されます。このとき、USB以外の別ドライブ(例:内蔵D:や外付けHDDの専用フォルダ)を指定してください。

項目 | クイックスキャン |
---|---|
検出ファイル数 | 5ファイルのうち4ファイル |
所要時間 | 数秒 |
プレビュー可否 | photo_日本語.jpgのみプレビューで正しく表示された。 ※test_english.txtのプレビューでは文字化け、mixed content.docxとvideo_sample.mp4についてはプレビューでサポート外でした。 |
復元先 | デスクトップの「復元出力先」フォルダー |
4:復元先フォルダーで再度CSV化する
※以下は先ほどと同一のPowerShellコマンドです。
> Set-Location "C:\Users\owner\OneDrive\Desktop\復元出力先\FH6M2_A02 (F)\クイックスキャン\Akademeia_RecoveryTest" # 復元先フォルダーのパスを指定
> @( (Get-ChildItem -File) ) | ForEach-Object {
$h = Get-FileHash -Algorithm SHA256 -LiteralPath $_.FullName
[PSCustomObject]@{
Name = $_.Name
Length = $_.Length
CreationTime = $_.CreationTime.ToString('o')
LastWriteTime = $_.LastWriteTime.ToString('o')
SHA256 = $h.Hash
}
} | Export-Csv -NoTypeInformation -Encoding Default "..\baseline_$(Get-Date -f yyyyMMddHHmmss).csv"
上位にCSVファイルが生成されました。以下はExcelで開いたところです。

4:ベースラインと復元結果の簡易比較
> $base = Import-Csv "F:\baseline_20250818001823.csv"
> $recv = Import-Csv "C:\Users\owner\OneDrive\Desktop\復元出力先\FH6M2_A02 (F)\クイックスキャン\baseline_20250818005731.csv"
# 内容一致(Name + SHA256)
> Compare-Object $base $recv -Property Name,SHA256 -IncludeEqual -PassThru | Format-Table Name, SideIndicator, SHA256
Name SideIndicator SHA256
---- ------------- ------
photo_���{��.jpg == 45D4E7FA370F772557EB25BDAED3298AD66D38F7A04D6CB9150A6813930AF309
video_sample.mp4 == EA3AF4327C291B2321DBC7A24BFF716DED036FC9E574613C723BFB885F9F0369
mixed content.docx => B1BCFFBE5DDC1DFD0B11897C454376702DFD1DCD95936BDC5646644D15C24A47
test_english.txt => C429B2B32F74C8D97D5D7B2EFC3D4E514B3762DA61276054C35269BFEAC6DB1B
mixed content.docx <= 14A252345FC22FABF632FDD14639A5972FD5E46945C602CA3D9E2A4261ADF6F7
test_english.txt <= 8648D1ACB8723D5F41C94417F2A26108CDB4985D02330E6995FF915B9CB480FE
test_���{��.txt <= 077C771EF66ECDF1FC361014C45F67AAF61664F38B3115805AA7517F7B735DC7
# ファイル名の文字化けはここでは無視。「<=」や「=>」は不一致を意味します。
# 【参考】タイムスタンプ差異の把握
> $map = $recv | Group-Object Name -AsHashTable -AsString
> $base | ForEach-Object {
if ($map.ContainsKey($_.Name)) {
[PSCustomObject]@{
Name = $_.Name
Base_LastWrite = $_.LastWriteTime
Recv_LastWrite = $map[$_.Name].LastWriteTime
Same_Hash = ($_.SHA256 -eq $map[$_.Name].SHA256)
}
}
} | Format-Table
Name Base_LastWrite Recv_LastWrite Same_Hash
---- -------------- -------------- ---------
mixed content.docx 2025-08-17T22:48:18.0000000+09:00 2025-08-18T00:50:42.2798121+09:00 False
photo_���{��.jpg 2020-12-11T14:25:52.0000000+09:00 2025-08-18T00:50:42.3908076+09:00 True
test_english.txt 2025-08-17T23:54:14.0000000+09:00 2025-08-18T00:50:42.4248083+09:00 False
video_sample.mp4 2025-05-25T13:03:32.0000000+09:00 2025-08-18T00:50:51.8342598+09:00 True
項目 | 結果 |
---|---|
元のファイル名が保持 | 復元さえできていればOK |
フォルダ階層が再現 | OK |
最終更新日時(LastWriteTime) | ・ハッシュ値が一致している⇒一致 ・ハッシュ値が一致していない⇒不一致 |
ファイル名 | 元ハッシュ | 復元後ハッシュ | 一致 | 復元ファイルを 開いた結果 |
---|---|---|---|---|
mixed content.docx | 14A252345FC22FABF632FDD14639A5972FD5E46945C602CA3D9E2A4261ADF6F7 | B1BCFFBE5DDC1DFD0B11897C454376702DFD1DCD95936BDC5646644D15C24A47 | 不一致 | Wordで起動ならず |
photo_日本語.jpg | 45D4E7FA370F772557EB25BDAED3298AD66D38F7A04D6CB9150A6813930AF309 | 45D4E7FA370F772557EB25BDAED3298AD66D38F7A04D6CB9150A6813930AF309 | 一致 | 画像表示は問題なし ※ハッシュ値が一致しているので当然。 |
test_english.txt | 8648D1ACB8723D5F41C94417F2A26108CDB4985D02330E6995FF915B9CB480FE | C429B2B32F74C8D97D5D7B2EFC3D4E514B3762DA61276054C35269BFEAC6DB1B | 不一致 | エンコードの問題で文字化け |
test_日本語.txt | 077C771EF66ECDF1FC361014C45F67AAF61664F38B3115805AA7517F7B735DC7 | クイックスキャンでは復元失敗 | 比較不能 ※片方が存在しないため。 | |
video_sample.mp4 | EA3AF4327C291B2321DBC7A24BFF716DED036FC9E574613C723BFB885F9F0369 | EA3AF4327C291B2321DBC7A24BFF716DED036FC9E574613C723BFB885F9F0369 | 一致 | 画像表示は問題なし ※ハッシュ値が一致しているので当然。 |


AIスキャン【おまけ】
AIスキャンが終わるまで待ってみました。
スキャン結果数は258という結果になりました。
※ただし、本当に表示できるほど正確に復元できたかは別問題です。どれだけ鮮度が高いかが肝になります。これはRecoveryFox AIの問題ではなく、復元ツールに共通することです。

RecoveryFox AIを体験・購入したい方へ
RecoveryFox AI は、有料のデータ復元ソフトです。
スキャンやプレビューは無料で可能ですが、実際にファイルを復元・保存するにはライセンスが必要です。
↓↓↓RecoveryFox AIを体験・購入したい方はこちら↓↓↓
おわりに
本検証を通じ、RecoveryFox AIには「ユーザーに優しいシンプルな操作性」「読み取り専用アルゴリズムによる安全性」「クイックスキャンによるスピーディなスキャン」という明確な強みがあることを確認しました。
そして、重要ファイルを誤って削除した際には対象ドライブへの書き込みを最小限にとどめることが、データ復元の成功率を大きく左右する重要なポイントだと強く実感しました。
これは、フォレンジック調査においても「原媒体への書き込みを避け、可能であればイメージを作成して解析せよ」とされる原則とも一致する知見です。