Que dois-je savoir avant de fouiller dans un fichier d’archive inconnu?

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

  •  08-07-2019
  •  | 
  •  

Question

Un jeu auquel je joue stocke toutes ses données dans un fichier .DAT. Un travail a été effectué par des personnes qui examinaient le fichier. Il existe également des outils existants , mais je ne suis pas certain de leur état actuel. Je pense que ce serait amusant de fouiller dans les données moi-même, mais je n’ai jamais essayé d’examiner un fichier, encore moins ce genre de chose auparavant.

Y at-il quelque chose que je devrais savoir sur l’examen d’un format de fichier à des fins d’extraction de données avant de plonger la tête la première dans cette question?

EDIT: Je voudrais des conseils très généraux, car l’examen des formats de fichiers semble intéressant. Je voudrais pouvoir prendre File X et apprendre à aborder le problème de l'apprentissage à ce sujet.

Était-ce utile?

La solution

  1. Vous voudrez certainement un éditeur hexadécimal avant d'aller trop loin. Cela vous permettra de voir les données brutes sous forme de chiffres plutôt que de gros blocs vides dans le bloc-notes utilisé (ou l'éditeur de texte).
  2. Essayez de l’ouvrir dans tous les extracteurs d’archives que vous avez (zip, 7z, rar, gz, tar, etc.) pour voir s’il s’agit simplement d’un format de fichier renommé (.PK3 est un peu comme ça).
  3. Recherchez des en-têtes de formats de fichier connus quelque part dans le fichier, ce qui vous aidera à découvrir où certaines parties des données sont stockées (c.-à-d. recherchez "IPNG" pour rechercher tous les fichiers png (non compressés) quelque part).
  4. Si vous trouvez où une donnée donnée est stockée, notez son emplacement et sa longueur, et voyez si vous pouvez trouver des nombres égaux à l'une de ces valeurs au début du fichier, qui servent généralement de pointeurs. aux données réelles.
  5. Parfois, il vous suffit de deviner ou de deviner ce que signifie une certaine valeur et, si vous vous trompez, continuez. Vous ne pouvez pas y faire grand chose.
  6. J'ai constaté que http://www.wotsit.org est particulièrement utile pour les formats de type de fichier connus, pour obtenir de l'aide dans la recherche des en-têtes dans le fichier .dat.

Autres conseils

Sauvegardez d'abord le fichier. Une fois que vous avez limité la quantité de dégâts que vous pouvez causer, examinez-le comme le suggère Ed.

En ce qui concerne votre niveau de représentation, je suppose qu’un guide de base sur les nombres hexadécimaux, l’endianisme, les représentations de divers types de données et tout ce qui serait superflu. Un bon outil permettant d'afficher les données au format hexadécimal est bien sûr essentiel, tout comme la capacité d'écrire des scripts rapides pour tester des hypothèses complexes concernant la structure des données. Tout cela devrait être évident pour vous, mais pourrait peut-être aider quelqu'un d'autre, alors j'ai pensé les mentionner.

L’un des meilleurs moyens d’attaquer les formats de fichiers inconnus lorsque vous maîtrisez le contenu est de prendre une approche différentielle. Enregistrez un fichier, effectuez une petite modification contrôlée et enregistrez à nouveau. Faites une comparaison binaire des fichiers pour trouver la différence - en utilisant de préférence un outil capable de détecter les insertions et les suppressions. Si vous traitez avec un fichier crypté, une petite modification entraînera une différence énorme. Si c'est juste compressé, la différence ne sera pas localisée. Et si le format du fichier est trivial, un simple changement d'état entraînera une simple modification du fichier.

L’autre chose est d’examiner certaines des techniques de compression courantes, notamment zip et gzip, et d’apprendre leurs "signatures". La plupart de ces formats sont "auto-identifiables". ainsi, quand ils commencent à décompresser, ils peuvent vérifier rapidement que leur travail est dans un format qu'ils comprennent.

Sauf le cryptage, un format de fichier d'archive est fondamentalement une sorte de mécanisme d'indexation (un répertoire ou un tri), et une manière de localiser ces éléments depuis l'archive via des pointeurs dans l'index.

Avec l'omniprésence des algorithmes de compression standard, il suffit de rechercher le point de départ de ces blocs et d'essayer de rechercher l'index ou la table des matières.

Certains auront l’index au même endroit (comme le système de fichiers), d’autres simplement précéderont chaque élément de l’archive avec ses informations d’identité. Mais en fin de compte, quelque part, il y a des informations sur les décalages d'un bloc à un autre, sur les types de données (par exemple, s'ils stockent des fichiers GIF, les fichiers GIF ont également une signature), etc.

Ce sont les motifs que vous essayez de rechercher dans le fichier.

Ce serait bien si vous pouviez mettre la main sur deux versions de données en utilisant le même format. Par exemple, sur un jeu, vous pourrez peut-être obtenir la version initiale du CD et une version plus récente, corrigée. Celles-ci peuvent vraiment mettre en valeur les informations que vous recherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top