Como faço para detectar arquivos corrompidos?

Como faço para detectar arquivos corrompidos?

Tenho muitos arquivos, MP4, Mp3, Exe e outros, que durante um backup não foram copiados corretamente para o disco rígido por qualquer motivo, verifiquei o conteúdo do arquivo com um editor hexadecimal para descobrir que muitos dos arquivos corrompidos têm 00 preenchido áreas onde deveria haver dados, e algumas delas têm dados aleatórios onde deveria haver dados funcionais. Pelo menos para os 00 arquivos preenchidos, deve haver uma maneira de pesquisar todos eles e localizá-los. Eu tentei a ferramenta Windows Search (Windows 8.1) e habilitei a pesquisa do conteúdo do arquivo, no entanto, como não há como pesquisar Hex na pesquisa do Windows, procurei o período ASCII ..... que representa 00 Hex. Copiei o correto .... do editor hexadecimal e colei na pesquisa, não funcionou.

Gostaria de encontrar todos os arquivos que possuem uma grande quantidade de preenchimento hexadecimal 00, mas não sei como fazer isso, qualquer dica seria apreciada. Obrigado.

Responder1

OVisualizador binárioO programa possui uma função que permitirá pesquisar sequências hexadecimais e padrões binários em determinados diretórios (ou você pode especificar root para toda a sua máquina).

Uma outra solução possível é verificar programaticamente todos os seus arquivos e escolher aqueles com um número de valores "00" maior que o esperado (ou seja, aqueles com um grande número médio de "00"). Você vai querer usar uma linguagem de programação para isso. Como sou estatístico, gosto da Rlinguagem de programação porque:

  1. É grátis; e
  2. É relativamente fácil de aprender.

No R, você pode examinar os valores "hexadecimais" de um arquivo (presumo que você esteja vendo os hexadecimais de 1 byte aqui) com o seguinte Rcódigo:

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

Agora você pode encontrar o número médio de entradas "00":

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

Tudo o que você precisa fazer é colocar uma estrutura de loop simples em torno desse código para percorrer todos os arquivos em um diretório e gerar o número médio de entradas "00". Você poderia ficar ainda mais sofisticado e "treinar" o ponto de corte médio ingênuo ideal executando esse algoritmo através de um monte deconhecidoarquivos bons (ou seja, não corrompidos) e calculando a média das entradas "00" nos arquivos (ou seja, a média das médias). Você provavelmente poderia calcular um intervalo de confiança típico em torno disso e provavelmente usar uma extremidade superior do intervalo de confiança como ponto de corte para alimentar seu programa para procurar arquivos dedesconhecidocorrupção. Isso ajudaria você a eliminar aqueles que corrompem.

informação relacionada