¿Qué debo saber antes de buscar un archivo desconocido para las cosas?

StackOverflow https://stackoverflow.com/questions/295711

  •  08-07-2019
  •  | 
  •  

Pregunta

Un juego que juego almacena todos sus datos en un archivo .DAT. Ha habido algún trabajo realizado por personas al examinar el archivo. También hay algunas herramientas existentes , pero no estoy seguro de su estado actual Creo que sería divertido hurgar en los datos yo mismo, pero nunca he intentado examinar un archivo, y mucho menos algo como esto antes.

¿Hay algo que deba saber sobre el examen de un formato de archivo para fines de extracción de datos antes de sumergirme de lleno en esto?

EDITAR: Me gustaría obtener consejos muy generales, ya que examinar formatos de archivo parece interesante. Me gustaría poder tomar el Archivo X y aprender a abordar el problema de conocerlo.

¿Fue útil?

Solución

  1. Definitivamente querrás un editor hexadecimal antes de llegar demasiado lejos. Le permitirá ver los datos sin procesar como números en lugar de como grandes bloques vacíos en cualquier fuente que el bloc de notas esté usando (o cualquier editor de texto).
  2. Intente abrirlo en cualquier extractor de archivos que tenga (es decir, zip, 7z, rar, gz, tar, etc.) para ver si es solo un formato de archivo renombrado (.PK3 es algo así).
  3. Busque encabezados de formatos de archivo conocidos en algún lugar dentro del archivo, que lo ayudarán a descubrir dónde se almacenan ciertas partes de los datos (es decir, busque '' IPNG '' para encontrar archivos png (sin comprimir) en algún lugar).
  4. Si encuentra dónde se almacena un determinado dato, tome nota de su ubicación y longitud, y vea si puede encontrar números iguales a cualquiera de esos valores cerca del comienzo del archivo, que generalmente actúan como punteros a los datos reales.
  5. Algunas veces solo tienes que adivinar o intuir lo que significa un cierto valor, y si te equivocas, bueno, sigue moviéndote. No hay mucho que puedas hacer al respecto.
  6. He encontrado que http://www.wotsit.org es particularmente útil para formatos de tipo de archivo conocidos, para ayudar a encontrar encabezados dentro del archivo .dat.

Otros consejos

Haga una copia de seguridad del archivo primero. Una vez que haya restringido la cantidad de daño que puede hacer, simplemente hurgue como sugirió Ed.

Mirando el nivel de su representante, supongo un manual básico sobre números hexadecimales, endianness, representaciones para varios tipos de datos, y todo eso sería un poco superfluo. Por supuesto, una buena herramienta que puede mostrar los datos en hexadecimal es esencial, como lo es la capacidad de escribir scripts rápidos para probar suposiciones complejas sobre la estructura de los datos. Todo esto debería ser obvio para usted, pero tal vez pueda ayudar a alguien más, así que pensé en mencionarlo.

Una de las mejores formas de atacar formatos de archivo desconocidos, cuando tienes cierto control sobre los contenidos, es adoptar un enfoque diferencial. Guarde un archivo, realice un cambio pequeño y controlado y vuelva a guardar. Haga una comparación binaria de los archivos para encontrar la diferencia, preferiblemente utilizando una herramienta que pueda detectar inserciones y eliminaciones. Si se trata de un archivo cifrado, un pequeño cambio desencadenará una gran diferencia. Si solo está comprimido, la diferencia no se localizará. Y si el formato del archivo es trivial, un simple cambio de estado dará como resultado un simple cambio en el archivo.

La otra cosa es mirar algunas de las técnicas de compresión comunes, especialmente zip y gzip, y aprender sus '' firmas ''. La mayoría de estos formatos son autoidentificables. así que cuando comienzan a descomprimir, pueden hacer comprobaciones rápidas de cordura de que lo que están trabajando está en un formato que entienden.

Salvo el cifrado, un formato de archivo de almacenamiento es básicamente algún tipo de mecanismo de indexación (un directorio o una clase), y una forma de ubicar esos elementos desde dentro del archivo a través de punteros en el índice.

Con la ubicuidad de los algoritmos de compresión estándar, se trata principalmente de encontrar dónde comienzan esos bloques y tratar de buscar el índice o la tabla de contenido.

Algunos tendrán el índice todo en un lugar (como lo hace un sistema de archivos), otros simplemente precederán a cada elemento dentro del archivo con su información de identidad. Pero al final, en algún lugar, hay información sobre las compensaciones de un bloque a otro, hay información sobre los tipos de datos (por ejemplo, si almacenan archivos GIF, los GIF también tienen una firma), etc.

Esos son los patrones que estás intentando cazar dentro del archivo.

Sería bueno si de alguna manera puedes tener acceso a dos versiones de datos usando el mismo formato. Por ejemplo, en un juego, es posible que pueda obtener la versión inicial del CD y una versión parcheada más nueva. Estos realmente pueden resaltar la información que está buscando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top