¿Cómo detecto archivos corruptos?

¿Cómo detecto archivos corruptos?

Tengo muchos archivos, MP4, Mp3, Exe y otros, que durante una copia de seguridad no se copiaron correctamente al disco duro por cualquier motivo. Revisé el contenido del archivo con un editor hexadecimal y descubrí que muchos de los archivos corruptos tienen 00 relleno. áreas donde se supone que hay datos, y algunas de ellas tienen datos aleatorios donde se supone que hay datos funcionales. Al menos para los 00 archivos completos, debería haber una manera de buscarlos todos y localizarlos. Probé la herramienta de búsqueda de Windows (Windows 8.1) y habilité la búsqueda de contenido de archivos; sin embargo, como no hay forma de buscar hexadecimal en la búsqueda de Windows, busqué el período ASCII... que representa 00 hexadecimal. Copié lo correcto... del editor hexadecimal y lo pegué en la búsqueda, no funcionó.

Me gustaría encontrar todos los archivos que tengan una gran cantidad de relleno 00 hexadecimal pero no sé cómo hacerlo, agradecería cualquier consejo. Gracias.

Respuesta1

ElVisor binarioEl programa tiene una función que le permitirá buscar secuencias hexadecimales y patrones binarios dentro de directorios determinados (o puede especificar la raíz para toda su máquina).

Otra posible solución es escanear mediante programación todos sus archivos y seleccionar aquellos con un número de valores "00" superior al esperado (es decir, aquellos con un número medio grande de "00"). Querrás usar un lenguaje de programación para esto. Como soy estadístico, me gusta el Rlenguaje de programación porque:

  1. Es gratis; y
  2. Es relativamente fácil de aprender.

En R, puede examinar los valores "hexadecimales" de un archivo (supongo que está viendo los valores hexadecimales de 1 byte aquí) con el siguiente 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

Ahora puedes encontrar el número medio de entradas "00":

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

Todo lo que necesita hacer es colocar una estructura de bucle simple alrededor de este código para recorrer todos los archivos en un directorio y generar el número medio de entradas "00". Podrías volverte aún más sofisticado y "entrenar" el punto de corte medio ingenuo óptimo ejecutando este algoritmo a través de un montón deconocidoarchivos buenos (es decir, no corruptos) y calcular la media promedio de entradas "00" en los archivos allí (es decir, la media de medias). Probablemente podría calcular un intervalo de confianza típico en torno a esto y probablemente usar un extremo superior del intervalo de confianza como punto de corte para introducir en su programa la búsqueda de archivos dedesconocidocorrupción. Esto le ayudaría a eliminar a aquellos que corrompen.

información relacionada