2015-04-14 25 views
16

Stavo leggendo un articolo che spiega How to Hide Files in JPEG Pictures.Come nascondere i file nel file jpeg

Mi chiedo come sia possibile che un file contenga sia dati jpeg sia un file rar senza alcuna distorsione visibile né all'immagine né al file compresso.

La mia ipotesi è che abbia qualcosa a che fare con il modo in cui il file compresso o il file jpeg è rappresentato in forma binaria, ma non ho idea di come funzioni.

Qualcuno può approfondire?

risposta

10

Tutto ciò che sta facendo è aggiungere l'archivio alla fine di un flusso JPEG. Quindi speri che il tuo decodificatore JPEG non legga oltre il marcatore EOI, trovi i dati lì e dica che qualcosa non va.

Un'immagine JPEG è un flusso di byte che inizia con un indicatore SOI e termina con un indicatore EOI.

ZIP e RAR sono flussi di byte. Uno stream ZIP inizia con 50 4B. Un flusso RAR inizia con 52 61 72 21 1A 07.

Il metodo descritto nel collegamento sopra richiede una copia binaria di (più) un flusso JPEG e aggiunge un flusso ZIP o RAR ad esso.

I decodificatori RAR/ZIP scansionano il flusso finché non trovano la firma per RAR o ZIP (ignorando il flusso JPEG).

+0

E come mai il programma archieve salta i dati jpeg per arrivare a arhieve. come fa a sapere dove finisce jpeg e inizia l'archiviazione dei dati? – yasar

+0

Deve cercare la propria firma nel flusso di dati. Presumibilmente questo trucco potrebbe funzionare con la maggior parte dei tipi di file binari. Quindi probabilmente non sta scannerizzando il file JPEG e cercando il marker EOI. – user3344003

3

questa risposta non affrontare il caso esatto nel link che hai dato, ma fornisce un altro modo di nascondere i dati:

Sarebbe anche teoricamente possibile nascondere un file all'interno l'immagine JPEG in sé, ma si farebbe bisogno di un programma complicato per scrivere i dati codificati e poi leggerlo di nuovo.

Fondamentalmente, una fotografia JPEG contiene molte informazioni che, se modificate, non sarebbero visibili all'occhio umano. Immagina di avere una foto di una persona in una maglietta blu. Se ingrandisci quella maglietta, vedrai che non è un colore blu uniforme, ma è composta da una moltitudine di macchie di colore, la maggior parte delle quali è un tono bluastro (ma alcune potrebbero essere anche altri colori). È possibile modificare facilmente alcune di queste macchie in un tono leggermente diverso e non farebbe alcuna ovvia differenza visibile all'immagine.

Un programma intelligente potrebbe incorporare un codice nella foto cambiando leggermente i pixel in uno schema che rappresenta i dati. Un esempio molto semplice: se la "tonalità" (cioè il tono del colore) è rappresentata da un numero compreso tra 0 e 255, i pixel di una tonalità uniforme potrebbero rappresentare un bit "0" e i pixel di una tonalità dispari un bit "1". Sarebbe difficile per l'occhio umano rilevare una tale differenza nell'immagine.

Si tratta di una vecchia idea e questo articolo discute la quantità di dati potrebbero essere nascosti in questo modo: High capacity data hiding in JPEG-compressed images (2004)

0

v'è un semplice algoritmo che ho implementato con MATLAB. se dividi la tua immagine a 8 bit. il bit più significativo ha le informazioni più preziose e puoi rimuovere il bit 0 e il bit 1 senza alcuna modifica sull'immagine originale. quindi puoi mettere il tuo file al posto del bit 0 e 1. Ho visto questo algoritmo nel libro anil.k.jain.

1

In generale, nascondere un file in un altro file è una pratica nota come Steganography. Il metodo descritto nel collegamento fornito concatena semplicemente loalla fine dello .jpg utilizzando l'operatore +, sfruttando le diverse intestazioni di ciascun tipo di [email protected] user3344003 fa un ottimo lavoro per spiegare perché funziona in his/her answer. Ciò non distorce l'immagine perché i dati dell'immagine vengono lasciati inalterati.

Un altro metodo comune per nascondere un file in un'immagine consiste nell'utilizzare il bit meno significativo (LSB) di ciascun byte. Il modo in cui viene eseguito consiste nel sostituire ogni ottavo bit nel flusso di bit dell'immagine con il bit successivo del file che si desidera nascondere. Questo funziona perché i colori dell'immagine possono essere leggermente distorti senza essere facilmente percepiti dall'occhio umano. Con questo approccio, le dimensioni dell'immagine su disco non cresceranno come nel metodo del tuo collegamento. Ciò rende le prove del file nascosto molto più difficile da rilevare. Per uno sguardo dettagliato a questo e ad altri metodi steganografici, vedi this paper by Bret Dunbar.

Problemi correlati