Nascondere un file in una immagine

Vediamo come si può “nascondere un file all’interno di un’immagine, la cosa potrebbe tornare utile ad esempio per inviare file non permessi dal server SMTP.

In questo tutorial viene spiegato come eseguire l’operazione con Winrar, che però non è un software gratuito quindi ho deciso di rifare la procedura usando 7-Zip:

Logo di 7-Zip
Una volta scaricato ed installato 7-zip, isogna innanzitutto comprimere il file da nascondere in un archivio e quindi unirlo all’immagine prescelta. La procedura è molto più rapida se eseguita da prompt dei comandi, quindi premere Windows-R e digitare cmd e dare invio.

Dal prompt dei comandi per comprimere il file con 7-zip digitare:
7z a -t7z file.7z file_da_comprimere.exe
(naturalmente bisogna assicurarsi di essere nella cartella in cui si trova il file 7z.exe o eventualmente settare il giusto PATH)
Per unire il file compresso all’immagine, dare il comando:
copy /b immagine.png + file.7z output.png
(è importante che l’immagine venga messa prima del file compresso)

Prompt dei comandi

Ora se aprite normalmente il file output.png esso verrà aperto con un visualizzatore di immagini, se invece decidete di aprirlo con 7-Zip (o altro software per la gestione degli archivi compressi) esso mostrerà il file che abbiamo aggiunto. Ad esempio:
7zFM output.png

Bene, per fare prima potete usare un piccolo file BAT che io ho chiamato mfii (merge file in image) e che va usato nel seguente modo:
mfii file_da unire immagine
tenendo ben presente le seguenti cose:

  • se il percorso del file contiene spazi bisogna quotare con le virgolette;
  • l’immagine va sempre inserita come secondo parametro del comando;
  • se avete installato 7-zip in una cartella diversa da “C:\Programmi\7-zip” dovete modificare il file BAT inserendo il giusto percorso.

Il codice è il seguente:

@echo off
::  Se si è  installato 7-zip in una cartella diversa modificare il percorso con il  giusto PATH
PATH=%PATH%;C:\Programmi\7-zip;;
:: Imposta i tipi di file permessi per il file immagine
SET FILETYPE=.jpg .png .gif
:: Se non sono stati inseriti i parametri necessari lo script restituisce un errore
IF (%1)==() GOTO ERRORE3
IF (%2)==() GOTO ERRORE3
:: Verifica l'esistenza dei due file in input, se non esistono ritorna un ERRORE
IF NOT EXIST %1 GOTO  ERRORE1
IF NOT EXIST %2 GOTO ERRORE2
:: Estrae il nome del file di output che deriverà il suo nome dal file da aggiungere all'immagine
for %%F in (%1) do   SET IMGNAME=%%~nF
:: deriva l'estensione del file di output che coincide con l'estensione dell'immagine utilizzata
for %%F in (%2) do   SET IMGEXT=%%~xF
:: Verifica che il secondo file sia un'immagine altrimenti interrompe lo script
SET ISIMAGE=0
for %%F in (%FILETYPE%) do  IF (%%F)==(%IMGEXT%) SET ISIMAGE=1
IF (%ISIMAGE%)==(0) GOTO ERRORE4
:: Crea il file  archivio da aggiungere poi all'immagine, se il percorso di 7z.exe non è corretto verrà restituito un errore
7z  a -t7z temp.7z %1
:: unisce il file compresso all'immagine e dà il file di output
copy /b  %2 + temp.7z %IMGNAME%%IMGEXT%
:: Cancello il file temporaneo temp.7z
del temp.7z
:: Termina lo script non avendo incontrato nessun errore
echo Il file %IMGNAME%%IMGEXT%   è stato creato con successo
GOTO END
:ERRORE1
:: Se il primo file non esiste viene restituito un errore
echo il file %1  non esiste, accertarsi di aver digitato  correttamente il nome del file
GOTO END
 
:ERRORE2
:: Se il secondo file non esiste viene restituito un errore
echo il file %2 non esiste
GOTO END
:ERRORE3
echo  devi  inserire almeno due parametri
GOTO END

:ERRORE4
echo il secondo file in input deve essere un'immagine
GOTO END

:END

]]>

UPDATE: seguendo i suggerimenti di chi ha commentato ho creato uno script VBS che permette di “nascondere” un file in un’immagine dal menu contestuale di Explorer, questo è il link al nuovo post.

8 Responses to “Nascondere un file in una immagine”


  • Tutto chiaro, gialloporpora … anche se ho scaricato il file batch con il classico "copia e incolla".
    Nel test che ho effettuato il file grafico iniziale era di 3K mentre quello contenente il testo di 13K.
    Per verifica, ho poi ri-estratto il testo con 7-zip. Interessante.
    Ciao

  • A dire il vero volevo farlo usando Cygwin ma non sono ancora capace :-).
    Beh vediamo se qualcuno risolve l'indovinello 😛
    Ciao

  • Sicurezza 'fantasma' di Hotmail!
    Poco fa ho mandato a me stesso il file immagine di cui parlo sopra, quello contenente il testo nascosto.
    Bene, (o male?), mi sarei aspettato che il famoso mailer di Microsoft, che ha cambiato look nei giorni scorsi, avesse intercettato il file grafico mettendo all'erta il destinatario!
    ————-
    Allegati:
    Scansione allegati
    Logo Trend Micro®
    aaa.gif (13,8 KB)
    ————-
    E' noto infatti che nell'attentato alle torri gemelle le comunicazioni tra i membri della banda avvenissero attraverso 'innocui' file grafici come il mio.
    Vorrei capirci qualcosa di più. Ciao

  • A dire il vero anche io mi aspettavo che ImageShack mi rifiutasse i'immagine di 7-Zip.
    Comunque non viene riconosciuto nemmeno dagli antivirus, io ho provato ad inviarmi il file eicar.com (il file di test per gli Antivirus) e passa sempre :-P.
    In realtà se poi lo apro con 7-Zip Antivir me lo riconosce ma se lo apro come immagine non ci riesce :-P.
    Tele2 ha un controllo antivirus via SMTP perché il file eicar.com non sono mai riuscito ad inviarmelo quando volevo testare il funzionamento di Clammail, in questo caso invece passa.
    Ciao

  • Vediamo se passa … senza intoppi (c'è un file testo all'interno dell'immagine:
    <a href="http://imageshack.us"><img src="http://img526.imageshack.us/img526/901
    Ciao

    Nota su un post precedente: cliccando su 'inserisci', adesso l'inserimento avviene al primo colpo!

  • Internet Explorer 7.0 Windows XP

    ciao! una cosa…c’è un modo in cui poter far eseguire il file di testo(esempio un’altro file bat) quando apro l’immagine?

  • Mozilla Firefox 2.0.0.12 Windows XP

    Quando apri l’immagine con cosa ?
    Se con un software specifico dipende, se tale software ha un tool per far eseguire un comando esterno, si, se invece non è possibile farlo la risposta è no.

    Però ci sarebbe il problema di dover leggere come parametro aggiuntivo il file EXE da includere.
    Ciao

  • Mozilla Firefox 2.0.0.14 Windows XP

    @iEgUzZo,
    fors questo si avvicina un po’ a quello che chiedi.
    Ciao

Leave a Reply