Wie erkenne ich beschädigte Dateien?

Wie erkenne ich beschädigte Dateien?

Ich habe viele Dateien, MP4, MP3, Exe und andere, die während einer Sicherung aus irgendeinem Grund nicht richtig auf die Festplatte kopiert wurden. Ich habe den Dateiinhalt mit einem Hex-Editor geprüft und festgestellt, dass viele der beschädigten Dateien mit 00 gefüllte Bereiche haben, wo eigentlich Daten sein sollten, und einige von ihnen enthalten zufällige Daten, wo eigentlich funktionale Daten sein sollten. Zumindest für die mit 00 gefüllten Dateien sollte es eine Möglichkeit geben, nach all diesen zu suchen und sie zu finden. Ich habe es mit der Windows-Suche (Windows 8.1) versucht und die Suche nach Dateiinhalten aktiviert, da es jedoch in der Windows-Suche keine Möglichkeit gibt, nach Hex zu suchen, habe ich nach dem ASCII-Punkt … gesucht, der für 00 Hex steht. Ich habe das richtige … aus dem Hex-Editor kopiert und in die Suche eingefügt, aber es hat nicht funktioniert.

Ich möchte alle Dateien finden, die eine große Menge an 00-Hex-Füllungen enthalten, weiß aber nicht, wie das geht. Ich bin für alle Tipps dankbar. Danke.

Antwort1

DerBinärer ViewerDas Programm verfügt über eine Funktion, mit der Sie in angegebenen Verzeichnissen nach Hex-Sequenzen und Binärmustern suchen können (oder Sie können das Stammverzeichnis für Ihren gesamten Computer angeben).

Eine andere mögliche Lösung besteht darin, alle Ihre Dateien programmgesteuert zu durchsuchen und diejenigen mit einer höheren als erwarteten Anzahl von „00“-Werten (d. h. diejenigen mit einer großen durchschnittlichen Anzahl von „00“) herauszusuchen. Sie sollten hierfür eine Programmiersprache verwenden. Da ich Statistiker bin, mag ich die Programmiersprache, Rweil:

  1. Es ist kostenlos. Und
  2. Es ist relativ leicht zu erlernen.

In Rkönnen Sie die „Hex“-Werte einer Datei (ich gehe davon aus, dass Sie sich hier die 1-Byte-Hexwerte ansehen) mit dem folgenden RCode untersuchen:

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

Nun können Sie die durchschnittliche Anzahl der „00“-Einträge ermitteln:

#Find the mean number of times a "00" entry appears in this file
mean(myhex$fileRaw=="00")
 0.008298835

Alles, was Sie tun müssen, ist, eine einfache Schleifenstruktur um diesen Code zu legen, um alle Dateien in einem Verzeichnis zu durchlaufen und die mittlere Anzahl von "00"-Einträgen auszugeben. Sie könnten es noch anspruchsvoller machen und den optimalen naiven Mittelwert-Grenzwert "trainieren", indem Sie diesen Algorithmus durch eine Reihe vonbekanntgute (d. h. nicht beschädigte) Dateien und Berechnen des durchschnittlichen Mittelwerts der "00"-Einträge in den Dateien dort (d. h. des Mittelwerts der Mittelwerte). Sie könnten wahrscheinlich ein typisches Konfidenzintervall um diesen Wert herum berechnen und wahrscheinlich das obere Ende des Konfidenzintervalls als Grenzwert verwenden, um es in Ihr Programm einzuspeisen, um nach Dateien vonUnbekanntKorruption. Dies würde Ihnen helfen, diejenigen herauszupicken, die korrupt sind.

verwandte Informationen