Editor binario ed esadecimale — esaminate e modificate i file in esadecimale
Basta trascinare un file per vederne il contenuto in esadecimale, byte per byte. Permette di accertare il vero formato del file grazie ai byte identificativi e di modificarne direttamente il contenuto binario e scaricarlo. I file non vengono trasmessi ad alcun servente.
Le firme di file, o numeri magici, più comuni
| Formato | Byte iniziali (esadecimale) | Scostamento | Note |
|---|---|---|---|
| PNG | 89 50 4E 47 0D 0A 1A 0A | 0 | File di immagine. Se tutti e otto i byte coincidono, si tratta certamente di un PNG |
| JPEG | FF D8 FF | 0 | File di immagine. Il quarto byte varia secondo la variante, JFIF, Exif e simili |
| GIF | 47 49 46 38 39 61 / 47 49 46 38 37 61 | 0 | La stringa ASCII "GIF89a" oppure "GIF87a" |
| 25 50 44 46 2D | 0 | La stringa ASCII "%PDF-", seguita subito dal numero di versione | |
| ZIP, docx, xlsx, jar | 50 4B 03 04 | 0 | Formato ZIP. I documenti Office Open XML e molti formati di compressione e archiviazione usano internamente ZIP |
| Eseguibili di Windows (EXE e DLL) | 4D 5A | 0 | La stringa ASCII "MZ", retaggio del formato eseguibile di MS-DOS, in testa all'intestazione del formato PE |
| Eseguibili ELF | 7F 45 4C 46 | 0 | Formato eseguibile e delle librerie condivise usato in Linux e in altri sistemi |
Che cos'è un editor binario ed esadecimale
In fondo, qualunque file non è che una sequenza di byte. L'editor esadecimale mostra questo contenuto un byte alla volta in base esadecimale e, se necessario, permette di riscriverlo direttamente. Proprio i primi byte, in moltissimi formati, custodiscono i cosiddetti byte identificativi che rivelano il formato reale: un modo per accertare la vera natura di un file senza fidarsi ciecamente della sua estensione.
Questo strumento carica i file trascinandoli oppure inserendo l'esadecimale a mano. Visualizzazione, modifica e scaricamento avvengono interamente nel navigatore, senza che il contenuto venga mai inviato a un servente. Per i file di grandi dimensioni, però, vengono elaborati soltanto i primi 64 KB: quanto segue non viene conservato nemmeno nello scaricamento.
Come usare l'editor esadecimale
- Caricate il file Trascinate un file nell'area apposita, oppure incollate direttamente una sequenza esadecimale. Spazi e ritorni a capo vengono ignorati.
- Osservate i primi byte Basta guardare la zona vicina allo scostamento 0 e confrontarla con la tabella qui sopra per riconoscere il vero formato del file.
- Modificate un byte Facendo clic su una cella esadecimale potete cambiarne il valore fra 00 e FF; anche la colonna ASCII si aggiorna di conseguenza.
- Scaricate il risultato Salvate il contenuto modificato come file. Il documento originale resta intatto, così potete sperimentare modifiche senza correre rischi.
Consigli per sfruttarlo al meglio
- Per smascherare un file a cui è stata cambiata l'estensione, confrontate i primi byte con la tabella qui sopra. L'estensione è una semplice dichiarazione, mentre i byte identificativi derivano dal formato stesso e costituiscono un indizio difficile da falsificare.
- Nella modalità di immissione diretta potete incollare e caricare senz'altro una sequenza di byte copiata da un altro strumento, separata da spazi o da ritorni a capo.
- Se durante la modifica fate clic sulla cella sbagliata, il tasto di uscita annulla la modifica di quella cella.
- Nella messa a punto dei protocolli binari, affiancare con questo strumento i valori attesi alla sequenza di byte realmente scambiata rende più facile individuare il punto di scostamento.
Occasioni d'uso dell'editor esadecimale
Smascherare un'estensione contraffatta
Controllando i byte iniziali potete scoprire se l'estensione dichiarata corrisponde davvero al formato del file: utile per verificare allegati sospetti.
Individuare la causa di un file danneggiato
Dalla sequenza di byte si capisce se manca l'intestazione o se il file è stato troncato a metà, un'informazione preziosa per valutare se il recupero sia possibile.
Studiare le specifiche di un formato di file
Leggere la documentazione tecnica accanto alla sequenza di byte reale aiuta a comprendere concretamente come è strutturata un'intestazione.
Creare dati di prova volutamente corrotti
Modificando ad arte alcuni byte potete verificare come si comporta un programma quando gli viene sottoposto un file anomalo.
Verificare un protocollo binario byte per byte
Potete osservare direttamente i dati grezzi inviati o ricevuti, senza dover ricorrere a un analizzatore di rete separato.
Termini relativi ai file binari
- Byte
- Unità composta da 8 bit. In esadecimale è rappresentato da due cifre comprese fra 00 e FF.
- Byte identificativo (magic byte)
- Sequenza caratteristica posta all'inizio di un file per indicarne il formato. Detta anche firma del file.
- Scostamento (offset)
- Posizione di un byte, contata a partire dall'inizio del file. Viene indicata generalmente in esadecimale.
- Intestazione (header)
- Sezione posta all'inizio del file che raccoglie informazioni come formato e dimensione.
- Visualizzazione ASCII
- Rappresentazione in cui ogni byte viene interpretato come carattere, utile per individuare stringhe di testo incorporate.
- Ordine dei byte (endianness)
- Il criterio con cui vengono disposti i byte di un numero a più byte: a seconda del formato, il byte più significativo può comparire per primo o per ultimo.
Domande frequenti
FF D8 FF, è molto probabile che si tratti di un'immagine JPEG.
A proposito — perché la vera natura di un file si scopre dai byte e non dall'estensione
L'estensione dei file di Windows è soltanto un suggerimento che dice al sistema operativo con quale programma aprire il documento: una stringa indipendente dal contenuto. Rinominare un `.txt` in `.jpg` non lo rende apribile come immagine e, viceversa, cancellare l'estensione di una vera immagine non ne altera i dati. Il carattere di semplice autodichiarazione di questo dato è sfruttato da tempo dai programmi malevoli che si travestono da immagini o documenti.
Molti formati, per contro, sono progettati per incorporare nei primi byte un identificativo caratteristico, detto byte identificativo o numero magico. Un PNG comincia sempre con gli otto byte 89 50 4E 47 0D 0A 1A 0A: per ciascun formato la specifica fissa una configurazione precisa, cosicché sistemi operativi e programmi possono accertare se un file sia davvero un PNG soltanto leggendone il contenuto. Anche il comando `file` dei sistemi Unix e il riconoscimento del tipo di supporto nei navigatori si fondano principalmente sul confronto di questi byte, non sull'estensione.
Nella progettazione dei byte identificativi si scorgono anche accorgimenti storici. Gli otto byte del PNG comprendono di proposito i codici di ritorno a capo 0D e 0A, per rilevare se il file, trasferito in modalità testuale, sia stato danneggiato dalla conversione dei fine riga. Non un semplice identificativo, dunque, ma un meccanismo che serve anche a scoprire le corruzioni avvenute durante il trasferimento: un dettaglio che dà la misura della profondità dei formati binari.