TL;DR Ci sono servizi online per corrompere i file che gli utenti inviano. Ma perché corrompere deliberatamente un file, impedendone la regolare apertura? Divertiamoci a ragionarci sopra.
Si può corrompere volontariamente un file per un qualche scopo? Se la risposta, di getto, è “NO! Ma perché mai?“, potreste rimanere sorpresi dall’esistenza di un sito web che offre, come servizio, proprio la corruzione dei file.
Si chiama corrupt-a-file.net e, come recita la prima pagina:
Give us your file, we will damage it at a point you can’t imagine.
This site can corrupt any kind of file: Word, Excel, archives, MP3… anything! Just submit your files and we corrupt them.
Non avevo idea dell’esistenza di un simile servizio né avevo mai riflettuto sull’opportunità di dover corrompere volontariamente un qualche documento.
Fino a che, scorrendo il feed di un social network, non incappo in questo post, scritto da un esperto che aveva tenuto un incontro presso una scuola superiore italiana:
Se la vicenda raccontata può far sorridere, una riflessione meno triviale può invece rivelare utilizzi più o meno leciti, più o meno interessanti, di un tale strumento.
Non solo, infatti, la corruzione intenzionale di un file può essere strumento di testing per la corretta funzionalità di piattaforme software (es. come si comporta la mia procedura di upload fotografie in caso di un file jpg corrotto?) ma, nell’ottica di causare un danno o, comunque, una perdita di tempo, potrebbe essere usato per inviare documentazione e materiale corrotto per causare un disagio nel destinatario (che, a seconda delle sue competenze informatiche, potrebbe impiegare molto tempo a capire il perché quel documento non riesce ad aprirsi…).
Come si corrompe un file?
Tecnicamente, la corruzione di un file è piuttosto semplice. Un file, che sia una immagine, un documento o un foglio di calcolo, è un insieme di byte generalmente composti da una intestazione (“header“), che ne definisce il formato (attraverso quelli che si chiamano “magic number“). Su sistemi unix-like (GNU/Linux), il comando “file [nome del file]” vi permetterà di analizzare un file e sapere che tipo è, oltre ad altre utili informazioni.
Ad esempio:
:~$ file jpg_file_format.jpg jpg_file_format.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, progressive, precision 8, 1000x708, components 3
Questo sistema d’identificazione del formato del file è necessaria al sistema operativo per sapere con quale interprete aprire il file, ad esempio per una immagine JPG servirà un visualizzatore d’immagini, per un documento .doc servirà un word processor (es. Libre Office Writer), per un foglio di calcolo uno spreadsheet processor etc.
Per poter vsualizzare il grezzo (“raw“) di un file, bisogna usare un “editor binario“. Ne esistono diversi (sono usati, in particolare, da chi lavora a “basso livello”). Personalmente, uso bless (libero e open source).
Per fare un esempio, guardiamo come è strutturato un file immagine .jpg:
Aprendo un file .jpg con bless, quindi, vedrò:
Per “corrompere” questo file, mi basterà inserire valori a caso nella sezione “image data” (se voglio essere più “elegante”) oppure, casualmente, in varie parti del file (e questa sarà una corruzione più brutale).
Il risultato, semplicemente, sarà l’impossibilità per i software preposti d’interpretare correttamente il file e, quindi, di aprirlo.
Piccole corruzioni utili: la steganografia
Ad onor del vero, esistono tecniche per corrompere in modo non distruttivo (ovvero, impercettibile a occhio umano) alcuni tipi di file, ad esempio per nascondere al loro interno del contenuto che vogliamo mantenere riservato.
Questa tecnica si chiama steganografia (dal greco steganós, «coperto», e graphía, «scrittura») e sfrutta alcune peculiarità di certi formati (es. jpg) per inserire al loro interno informazioni non visibili a chi non ne è a conoscenza.
Viene usata, ad esempio e a titolo ludico, in alcune competizioni CTF (Capture The Flag).
Se l’argomento vi affascina, potete fare alcuni esperimenti attraverso questo strumento online: Steganography Online
Conclusioni
Quindi, per concludere, la prossima volta che potreste aver difficoltà ad aprire un file ricevuto, vale la pena chiedersi se non sia una difficoltà, in qualche modo, “desiderata”.
P.S. In ogni caso ricordatevi che quando usate questi strumenti, state inviando dati a un server remoto, che potrebbe memorizzarli e usarli a scopi non sempre leciti. Sconsiglio, pertanto, l’uso di simili strumenti con documenti/dati riservati.