Cosa dovrei sapere prima di cercare un file di archivio sconosciuto per cose?

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

  •  08-07-2019
  •  | 
  •  

Domanda

Un gioco che gioco memorizza tutti i suoi dati in un file .DAT. C'è stato alcuni lavori svolti da persone nell'esame del file. Ci sono anche alcuni strumenti esistenti , ma non sono sicuro di il loro stato attuale. Penso che sarebbe divertente curiosare tra i dati, ma non ho mai provato a esaminare un file, e tanto meno niente di simile prima.

C'è qualcosa che dovrei sapere sull'esame di un formato di file ai fini dell'estrazione dei dati prima di immergermi a fondo in questo?

MODIFICA: Vorrei suggerimenti molto generali, poiché esaminare i formati di file sembra interessante. Mi piacerebbe essere in grado di prendere File X e imparare come affrontare il problema di apprenderlo.

È stato utile?

Soluzione

  1. Avrai sicuramente bisogno di un editor esadecimale prima di andare troppo lontano. Ti consentirà di visualizzare i dati grezzi come numeri anziché come grandi blocchi vuoti in qualsiasi blocco note tipo di carattere (o in qualsiasi editor di testo).
  2. Prova ad aprirlo in qualsiasi estrattore di archivio che hai (ad esempio zip, 7z, rar, gz, tar ecc.) per vedere se è solo un formato di file rinominato (.PK3 è qualcosa del genere).
  3. Cerca le intestazioni dei formati di file conosciuti da qualche parte all'interno del file, che ti aiuteranno a scoprire dove sono memorizzate alcune parti dei dati (cioè fai una ricerca per " IPNG " per trovare qualsiasi file png (non compresso) da qualche parte all'interno del file).
  4. Se trovi dove è memorizzato un determinato dato, prendi nota della sua posizione e lunghezza e vedi se riesci a trovare numeri uguali a uno di quei valori vicino all'inizio del file, che di solito fungono da puntatori ai dati effettivi.
  5. Alcune volte devi solo indovinare o intuire il significato di un determinato valore e, se sbagli, beh, continua a muoverti. Non puoi fare molto al riguardo.
  6. Ho scoperto che http://www.wotsit.org è particolarmente utile per i formati di file noti, per aiutare a trovare le intestazioni all'interno del file .dat.

Altri suggerimenti

Prima esegui il backup del file. Dopo aver limitato la quantità di danno che puoi fare, basta dare un'occhiata come suggerito da Ed.

Guardando il tuo livello di rep, immagino un primer di base su numeri esadecimali, endianness, rappresentazioni per vari tipi di dati e tutto ciò sarebbe un po 'superfluo. Un buon strumento in grado di mostrare i dati in esadecimale è ovviamente essenziale, così come la capacità di scrivere script rapidi per testare ipotesi complesse sulla struttura dei dati. Tutti questi dovrebbero essere ovvi per te, ma forse potrebbero aiutare qualcun altro, quindi ho pensato di menzionarli.

Uno dei modi migliori per attaccare formati di file sconosciuti, quando si ha un certo controllo sui contenuti, è adottare un approccio differenziale. Salvare un file, apportare una modifica piccola e controllata e salvare di nuovo. Esegui un confronto binario dei file per trovare la differenza, preferibilmente utilizzando uno strumento in grado di rilevare inserimenti ed eliminazioni. Se hai a che fare con un file crittografato, una piccola modifica attiverà una differenza enorme. Se è appena compresso, la differenza non verrà localizzata. E se il formato del file è banale, un semplice cambio di stato comporterà una semplice modifica al file.

L'altra cosa è guardare alcune delle comuni tecniche di compressione, in particolare zip e gzip, e imparare le loro "firme". La maggior parte di questi formati sono "autoidentificanti" così quando iniziano a decomprimere, possono fare rapidi controlli di integrità che stanno lavorando in un formato che comprendono.

Escludendo la crittografia, un formato di file di archivio è fondamentalmente una sorta di meccanismo di indicizzazione (una directory o una sorta) e un modo per localizzare quegli elementi all'interno dell'archivio tramite puntatori nell'indice.

Con l'onnipresenza degli algoritmi di compressione standard, si tratta principalmente di trovare da dove iniziano quei blocchi e provare a dare la caccia all'indice o al sommario.

Alcuni avranno l'indice tutto in un punto (come fa un file system), altri semplicemente precederanno ogni elemento all'interno dell'archivio con le sue informazioni di identità. Ma alla fine da qualche parte, ci sono informazioni sugli offset da un blocco all'altro, ci sono informazioni sui tipi di dati (ad esempio, se stanno memorizzando file GIF, anche le GIF hanno una firma), ecc.

Questi sono gli schemi che stai cercando di cercare all'interno del file.

Sarebbe bello se in qualche modo riuscissi a mettere le mani su due versioni di dati usando lo stesso formato. Ad esempio, in un gioco, potresti essere in grado di ottenere la versione iniziale dal CD e una versione più recente e patchata. Questi possono davvero evidenziare le informazioni che stai cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top