MP4、Mp3、Exe などの多くのファイルがありますが、何らかの理由でバックアップ中にハード ドライブに正しくコピーされませんでした。16 進エディターでファイルの内容をチェックしたところ、破損したファイルの多くで、データがあるはずの領域が 00 で埋められており、機能するデータがあるはずの領域がランダム データになっているものもありました。少なくとも 00 で埋められたファイルについては、これらすべてを検索して見つける方法があるはずです。Windows の検索ツール (Windows 8.1) を試し、ファイルの内容の検索を有効にしましたが、Windows の検索で 16 進数を検索する方法がないため、00 16 進数を表す ASCII ..... ピリオドを検索しました。16 進エディターから正しい .... をコピーして検索に貼り付けましたが、うまくいきませんでした。
大量の 00 16 進数フィルを含むすべてのファイルを検索したいのですが、方法がわかりません。ヒントがあれば教えていただけるとありがたいです。ありがとうございます。
答え1
のバイナリビューアプログラムには、指定されたディレクトリ内 (またはマシン全体のルートを指定可能) で 16 進シーケンスとバイナリ パターンを検索できる機能があります。
もう 1 つの解決策は、プログラムですべてのファイルをスキャンし、予想よりも多くの「00」値 (つまり、「00」の平均数が多い) を持つファイルを選択することです。このためにはプログラミング言語を使用する必要があります。私は統計学者なので、次のようなR
理由でプログラミング言語を好みます。
- 無料です。
- 習得するのは比較的簡単です。
では、次のコードR
を使用して、ファイルの「16 進数」値を調べることができます (ここでは 1 バイトの 16 進数を調べていると想定しています) 。R
install.packages("DescTools")
library(DescTools)
myBinary="D:/temp/2.jpg"
myhex = readRaw(myBinary)
#View first 20 entries
head(myhex$fileRaw, n=20)
ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00
これで、「00」エントリの平均数がわかります。
#Find the mean number of times a "00" entry appears in this file
mean(myhex$fileRaw=="00")
0.008298835
必要なのは、このコードの周りに単純なループ構造を配置して、ディレクトリ内のすべてのファイルをループし、「00」エントリの平均数を出力させることだけです。さらに洗練された方法で、このアルゴリズムを一連のファイルに適用して、最適なナイーブ平均カットオフポイントを「トレーニング」することもできます。知られている良い(つまり、破損していない)ファイルを検索し、そこにあるファイル内の「00」エントリの平均(つまり、平均の平均)を計算します。おそらく、これに基づいて典型的な信頼区間を計算し、信頼区間の上限をカットオフポイントとして使用して、プログラムに入力して、破損していないファイルを検索することができます。未知腐敗。これは腐敗した者を排除するのに役立ちます。