Domanda:
Dove trovare informazioni su un formato di file?
user187
2013-04-04 12:49:50 UTC
view on stackexchange narkive permalink

Diciamo che ho trovato "qualche" file (potrebbe essere un eseguibile, potrebbero essere dati o qualcos'altro) e voglio eseguirlo o leggerlo. Apro questo file in un editor di testo, ma il formato non è leggibile. Gli esempi includono: classe Java, eseguibile Windows, database SQLite, DLL, ...

Conosco il formato del file, se possiamo fidarci dell'estensione.

C'è da qualche parte un sito o un database con molte informazioni su molti formati di file criptati o binari? Le informazioni dovrebbero includere:

  • Uso del file
  • Layout e struttura del file
  • Eventualmente programmi in grado di leggere o eseguire il file

Quindi non sto cercando un modo per identificare il formato del file. Conosco già il formato del file, ma ho bisogno di informazioni su quel formato. Quando viene utilizzato il formato (in quali applicazioni), qual è la struttura del formato?

Immagino che tutti questi dati vengano inviati in natura. Non vedo alcun gruppo in grado di mantenere una raccolta coerente di tutte le specifiche di tutti i formati. Ma potrei anche essere ignorante. :)
Quindi hai un file con un formato non documentato? Penso che la domanda sia ancora formulata in modo un po 'ambigua anche adesso. Inoltre, le chiusure che otterresti sono Wotsit e siti simili. Tutto il resto sarebbe più probabilmente un sito che copre la conoscenza del * dominio * su qualunque sia il formato specifico utilizzato.
@0xC0000022l sì, intendevo mantenere la domanda più ampia possibile, ma non è andata bene. Non ho un file di esempio particolare che sto guardando al momento, volevo solo sapere se c'era una posizione centrale con le informazioni sul formato del file. Wotsit è davvero molto buono, come menzionato [in questa risposta] (http://reverseengineering.stackexchange.com/a/1573/187).
Trovo la domanda interessante, tuttavia, tutti i buoni siti e librerie a cui riesco a pensare per ora sono già stati menzionati, quindi stai effettivamente ora (a causa della taglia) alla ricerca di una metodologia precisa?
@Ange Hachoir è il migliore che abbia mai visto fino ad ora, tuttavia, poiché molte cose sono state menzionate, forse una lista CW sarebbe migliore. In caso contrario, userò la taglia solo per premiare una risposta esistente. Soprattutto la cosa Hachoir sembra adatta a quell'IMO.
Hachoir è davvero fantastico - sarebbe stata la mia prima risposta - sia in termini di ciò che è già supportato, sia di come può essere esteso (la sua struttura rende facile aggiungere nuovi formati, [esempio] (https://bitbucket.org/ haypo / hachoir / src / 9bae02ddf53ea7284f7a431654849ad5e553c429 / hachoir-parser / hachoir_parser / program / exe_pe.py)).
Dodici risposte:
#1
+36
nneonneo
2013-04-08 21:01:02 UTC
view on stackexchange narkive permalink

Sono uno sviluppatore del progetto Hachoir, che mira a descrivere il formato di qualsiasi file fino al livello di bit. Attualmente dispone di parser per una serie di formati ben noti, comprese classi Java, eseguibili Windows, file MP3, ecc. L'elenco completo dei parser può essere trovato nelle sottodirectory qui.

Quando si lavora su un nuovo parser per hachoir_parser , è spesso necessario trovare informazioni su un formato di file. Non esiste una singola fonte che descriva ogni formato (anche se Hachoir aspira ad essere questa fonte, non è abbastanza completa). In genere, il primo passo è solo cercare <file format name> file format , ad es. formato del file della classe java e cerca la documentazione sui siti ufficiali (per le classi Java, questo restituisce la documentazione di Oracle, che dovrebbe essere tutto ciò di cui hai bisogno). Se non ci sono siti ufficiali, potresti comunque fornire della documentazione di qualcuno che ha lavorato sul formato in passato.

Per i formati di file comuni, questo mostra la specifica del formato che desideri circa 90-95 % del tempo. Le società di software più grandi, come Oracle e Microsoft, pubblicano online le specifiche del formato dei file per motivi di interoperabilità. Ad esempio, è possibile trovare la documentazione per i formati PE (Windows EXE / DLL), MS Office (XLS, PPT, DOC) e altri formati Microsoft sfogliando o cercando MSDN.

Per i formati multimediali, il Multimedia Wiki è una grande risorsa. Coprono anche alcuni formati di file di gioco.

Per un formato di file meno comune, per il quale non trovo una specifica (o una descrizione adatta) da Google, il mio approccio è solitamente quello di trovare un open-source programma che comprende il file e individua l'origine della specifica del formato (se descritta in un commit o in README) oppure legge direttamente il codice sorgente per comprendere il formato del file.

Se non ci sono programmi open source per il file e non ci sono descrizioni apertamente disponibili del formato del file online, il formato del file è probabilmente piuttosto oscuro. Per i file di gioco (in cui molti sviluppatori insistono nell'usare i propri formati proprietari), ho scoperto che XeNTaX offre alcuni buoni suggerimenti e una buona comunità per aiutare a capire i formati. Con altri tipi di formati, potrebbe essere necessario iniziare a esaminare i campioni necessari per confrontare i campi di byte e chiarire la loro funzione. Se si dispone di un programma che accetta questi file, è possibile provare a modificare i campi in modo metodico per determinare quali effetti hanno sull'output del programma. Questo è in definitiva il "vero" lavoro di reverse engineering, e penso che non rientri nell'ambito di questa risposta.

Sono un grande fan del progetto Hachoir. L'ho utilizzato per anni. Continuate così.
Uno dei ragazzi su XentaX ha anche scritto uno script / framework chiamato QuickBMS che è piuttosto sorprendente. Sembra che possa essere utile per Hachoir. http://aluigi.altervista.org/quickbms.htm
#2
+28
samuirai
2013-04-04 14:48:13 UTC
view on stackexchange narkive permalink

Il file (1) e il sottostante libmagic (3) , file di impronte di comando basati su il contenuto del file. Ad esempio:

  $ file test.ctest.c: testo ASCII $ file test.exetest.exe: PE32 eseguibile per MS Windows (console) Intel 80386 $ file a 32 bit testtest: ELF 32 -bit LSB eseguibile, ARM, versione 1 (SYSV), collegato dinamicamente (utilizza librerie condivise), per GNU / Linux 2.6.16, non rimosso $ file database.sqlitedatabase.sqlite: database SQLite 3.x  

Queste informazioni possono quindi essere utilizzate per cercare in Internet lo standard effettivo, RFC, ...


Un'altra risorsa potrebbe essere i 010 modelli binari dell'editor, che include molti formati di file diversi e che puoi personalizzare o sviluppare da zero.


C'è un libro tedesco che conosco chiamato Dateiformate (Tedesco per: formati di file) .


Wikipedia - L'elenco dei formati di file contiene molti collegamenti con informazioni su determinati formati di file

Se questa fosse la risposta, la domanda non sarebbe un duplicato di [questo] (http://reverseengineering.stackexchange.com/questions/324/how-should-i-determine-the-format-of-this-audio- file)? Penso che voglia un database di specifiche dei formati di file. Non solo numeri magici.
Esattamente. La tua risposta è utile, ma non una risposta alla domanda. Conosco il formato del file, ho bisogno di informazioni su quel formato, ad esempio come è strutturato il file.
Hai ragione. Ha interpretato male la domanda. Mi sono appena ricordato di aver visto un libro con molti formati di file nella "libreria" del mio hackerspace locale. È un libro tedesco ma forse qualcuno può trovare la versione inglese. Ho aggiornato la mia risposta.
#3
+10
RobotHumans
2013-04-04 21:21:09 UTC
view on stackexchange narkive permalink

Mi piace file per determinare il tipo di file dall'intestazione magic e Wotsit per formati di file standard / documentazione / strutture di formati di file invertiti da altre persone.

Fileformat.info è stato suggerito come un'altra risorsa per coloro a cui non piace Wotsit o che ritengono sia datato.

Wotsit non è proprio una buona scelta: problemi di download (in effetti ora!), Raccolta mal organizzata.
@user539484: se non ti piace l'organizzazione, usa gli operatori "site:" o "inurl:" di un certo motore di ricerca con G per avere uno strumento di ricerca avanzato.
@0xC0000022L, piace di qualche aiuto con `wotsit.org` ... È rimasto bloccato negli anni '90. La raccolta `fileformat.info` è quasi altrettanto ampia e molto più amichevole per il lettore. Per dimostrare che la frustrazione può essere causata da wotsit, suggerirei di tentare di ottenere pubblicazioni relative a New Executable dalla raccolta di wotsit.
@user539484 - Allora perché non aggiungerlo? Le altre risposte non ti danno alcuna risorsa. Semplicemente "ecco uno strumento che funziona".
@Call me V, fileformat.info era già elencato. Uso anche Wikipedia, a volte i loro articoli sul layout dei file sono sorprendentemente buoni e tecnici.
#4
+10
Paul Wheatley
2013-04-08 21:00:57 UTC
view on stackexchange narkive permalink

Il wiki Risolviamo il problema del formato dei file copre un buon numero di formati oscuri e vale la pena controllare se Wikipedia non sta facendo il lavoro per te. È anche un buon posto per contribuire con materiale molto dettagliato o oscuro che Wikipedia potrebbe ritenere fuori portata.

Potresti trovare aiuto o consigli dalla comunità della biblioteca e della conservazione digitale archivistica che ha affrontato problemi di questa natura per diversi anni. La Open Planets Foundation è un buon punto di partenza. In particolare, la comunità (con cui lavoro) raccoglie esempi di formati di file difficili o danneggiati su un Format Corpus basato su Github. Contribuire a questo può essere utile per attirare consigli da esperti e, naturalmente, questo aiuta a sviluppare una risorsa utile per gli sviluppatori di strumenti di conservazione digitale (per test e convalida). Tuttavia, i file devono essere CC0!

Infine, l'altra strada da esplorare ulteriormente sarebbe la comunità forense digitale. La National Software Reference Library, ad esempio, offre alcune risorse utili che potrebbero aiutarti a superare i margini della tua sfida.

#5
+7
Denis Laskov
2013-04-04 13:33:10 UTC
view on stackexchange narkive permalink

Se ho capito bene, devi identificare il file? Prima di tutto - l'estensione non garantisce al 100% che il file sia quello che finge di essere. Puoi facilmente rinominare binary.dll in binary.dat o binary.hhh e creare comunque un'associazione di file o caricarlo come DLL.

Quindi, per identificare il file, puoi usare TrID di Marco Pontello.

Inoltre, l'editor esadecimale è un modo pratico per esaminare gli stream e tutti i tipi di dump.

Quando identifichi il file, Google ti aiuterà a trovare il modo corretto per modificare \ aprire \ eseguire il file.

Grazie per aver parlato di TrID, non sapevo di un programma così eccezionale :)
Sempre benvenuto, Jake :)
Grazie per la tua risposta, ma non devo identificare il file. Conosco già il formato (supponiamo che l'estensione sia corretta, per ora) ma ho bisogno di avere informazioni su quel formato, ad esempio come è strutturato il file.
Quindi, come ho detto, Google ti aiuterà a trovare RFC o dettagli appropriati per formato di file. per quanto riguarda .DLL - è strutturato quasi in modo simile a .EXE, ad eccezione della parte di esportazione dell'intestazione PE.
#6
+6
alexanderh
2013-04-08 19:12:32 UTC
view on stackexchange narkive permalink

Dai un'occhiata al progetto Hachoir. È esattamente quello che stai cercando. Hachoir-subfile è ottimo perché puoi passargli un flusso di file e identificherà tutti i tipi di file incorporati, le dimensioni (se possono essere calcolate) e il loro offset. Hachoir e dd sono due dei miei strumenti preferiti per ritagliare file da flussi di dati. Se stai usando ubuntu, digita sudo apt-get install hachoir , quindi esegui hachoir-subfile <file_stream> .

Se hai bisogno di scavare un po 'più a fondo nello stream puoi usare hachoir-urwid . Suddividerà il file in strutture note.

Non vedo dove Hachoir fornisce informazioni su un formato specifico? È solo un identificatore di file.
[Dichiarazione di non responsabilità: sono uno sviluppatore Hachoir.] Hachoir analizza i file in diversi formati noti per presentare una vista del contenuto del file, insieme a descrizioni per identificare ogni campo nel file. L'obiettivo di Hachoir è comprendere un file fino al livello di bit. Quindi, Hachoir viene utilizzato per molto di più che per l'identificazione dei file: può eseguire l'estrazione dei campi, la modifica dei campi e fornirà descrizioni testuali di ogni campo nel file.
#7
+5
Robert Mason
2013-04-08 18:20:02 UTC
view on stackexchange narkive permalink

Come in molte cose, se hai bisogno di maggiori informazioni, Wikipedia è la risposta. Ha solo informazioni dettagliate per alcuni formati, ma di solito ha collegamenti a descrizioni tecniche più approfondite dei formati. Devi indovinare in quale articolo sarebbe il formato del file, ma in molti casi puoi trovare buone informazioni su (almeno) molti dei formati più comuni. Non è l'ideale - forse sarebbe un progetto utile creare un nuovo wiki "formato file" - ma ha una discreta quantità di informazioni.

È tutt'altro che una fonte ideale per questo tipo di dati , ma in termini di risorse per un sito è una delle opzioni migliori ed è sicuramente un buon punto di partenza.

Alcuni esempi:

#8
+3
Jake Badlands
2013-04-04 13:02:32 UTC
view on stackexchange narkive permalink

Temo che non ci sia ancora un sito web su questo argomento :(
Dalla mia esperienza, la situazione in cui hai il file ma non ne conosci il tipo
non è frequente, ma quando succede può essere fastidioso e dispendioso in termini di tempo da risolvere.
Fondamentalmente, devi utilizzare l'editor esadecimale per individuare i caratteri che potrebbero darti un indizio,
e scaricare file di esempio dei tipi di file sospetti per analizzarli e trovare somiglianze. > Questo approccio funziona per me nella maggior parte dei casi.

Scusa, non sono stato chiaro. Conosco il tipo di file (in base all'estensione), ma ho bisogno di informazioni sul formato del file per poterlo leggere o eseguirlo.
@CamilStaps Quindi, se ho capito bene, stai parlando di questo tipo di situazione quando hai un file (ad esempio DLL) ma non sai qual è il suo scopo (ad esempio quale programma lo sta usando)?
Sì, quello, _e_ qual è lo scopo di quel file specifico. Quindi, per esempio, vorrei vedere cosa fa _that_ file DLL. Pertanto, ho bisogno di informazioni sul formato del file e [this] (http://filext.com/file-extension/DLL) non fornisce informazioni sufficienti.
Per sapere cosa fa il file DLL, è necessario smontarlo, come qualsiasi altro binario. :)
Il file DLL @CamilStaps è una struttura di dati complessa, che contiene una serie di strutture di dati più semplici, come codice e risorse, in qualsiasi combinazione. L'architettura di questa struttura dati dipende dal programmatore che l'ha creata quando il suo programma ne aveva bisogno.
@CamilStaps Stessa cosa con molti tipi di file diversi che sollevano la tua domanda. Sembra che sarebbe utile esaminare questa complessa struttura di dati per strutture di dati più semplici al suo interno e quindi analizzarle. Durante questo processo, diventi sempre più informato su questo file.
Ho menzionato solo DLL come esempio. Vorrei sapere se esiste un luogo standard in cui andare quando ha bisogno di informazioni dettagliate su un formato di file.
#9
+3
Laurent Clévy
2013-04-06 15:36:31 UTC
view on stackexchange narkive permalink

Informazioni sui formati multimediali: http://wiki.multimedia.cx/index.php?title=Main_Page

Signsrch troverà i modelli in un file: http : //aluigi.altervista.org/mytoolz.htm, come binwalk: http://code.google.com/p/binwalk/

e puoi trovare informazioni sul formato del file Amiga qui: http: //lclevy.free.fr/amiga/formats.html, sul formato Canon Raw v2 qui: http: //lclevy.free.fr/cr2/, formato MO3 ( modulo compresso): http: //lclevy.free.fr/mo3/
#10
+2
Euan
2013-04-05 10:44:59 UTC
view on stackexchange narkive permalink

DROID dagli archivi nazionali del Regno Unito è utile anche per identificare i formati di file.

Ho già _identificato_ il formato, ho bisogno di informazioni su quel formato.
DROID si collega al database pronom (http://www.nationalarchives.gov.uk/PRONOM/Default.aspx). Wikidata è un'altra opzione ad es. https://www.wikidata.org/wiki/Q2141903
#11
+2
nst
2013-04-05 14:19:43 UTC
view on stackexchange narkive permalink

La maggior parte dei formati di file ha intestazioni, come PK 0x03 0x04 per i file zip o 0x89 PNG 0x0D 0x0A 0x1A 0x0A per i file PNG.

Quindi , la maggior parte delle volte, devi solo leggere i primi byte per conoscere il formato del file.

Troverai molte descrizioni del formato dei file su http://www.fileformat.info /format/all.htm

#12
  0
Alexandre Dumont
2016-08-26 03:01:39 UTC
view on stackexchange narkive permalink

Questo è lo strumento che ho utilizzato quando avevo bisogno di riconoscere un formato di file o file all'interno di un (grande) dump. Ha un grande file BD di firma a cui tu / le persone potete contribuire.

Signsrch 0.2.4 (signsrch)

strumento per la ricerca di firme all'interno dei file, estremamente utile per invertire l'ingegneria per capire o avere un'idea iniziale di quale algoritmo di crittografia / compressione viene utilizzato per un protocollo o file proprietario. può riconoscere tonnellate di algoritmi di compressione, multimediali e di crittografia e molte altre cose come stringhe note e codice anti-debug che può essere aggiunto manualmente poiché è tutto basato su un file di firma di testo letto in fase di esecuzione e facile da modificare. supporta il multithreading, la scansione delle cartelle utilizzando caratteri jolly, la scansione dei processi, la conversione degli offset degli eseguibili negli offset della memoria, il caricamento dei file delle firme personalizzate e il loro controllo automatico per evitare errori, la ricerca automatica delle istruzioni che fanno riferimento alle firme trovate (come "Trova riferimenti "di Ollydbg) e l'avvio di un eseguibile che posiziona un byte INT3 all'offset di memoria desiderato (ad esempio uno di quelli recuperati con l'opzione -F, guarda il video setion per un esempio). lo strumento supporta 8, 16, 32 e 64 bit, float e double plus creazione automatica di tabelle CRC e stringhe in stile C.

Fonte: http://aluigi.altervista.org /mytoolz.htm

Come l'OP ha commentato cinque risposte simili: nessuna necessità di identificazione, sa già qual è il tipo di file.
Il punto è aiutare altri che potrebbero avere la stessa domanda in seguito.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...