2015-04-14 16 views
16

Ich habe einen Artikel gelesen, der How to Hide Files in JPEG Pictures erklärt.Wie funktioniert das Verbergen von Dateien in der JPEG-Datei?

Ich frage mich, wie es für eine Datei möglich ist, sowohl JPEG-Daten und eine RAR-Datei ohne sichtbare Verzerrung entweder auf das Bild oder auf die komprimierte Datei enthalten.

Meine Vermutung ist, dass es etwas damit zu tun hat, wie entweder die komprimierte Datei oder die JPEG-Datei in binärer Form dargestellt wird, aber ich habe keine Ahnung, wie das funktioniert.

Kann jemand darauf näher eingehen?

Antwort

10

Das Archiv wird nur am Ende eines JPEG-Streams hinzugefügt. Sie hoffen dann, dass Ihr JPEG-Decoder nicht über den EOI-Marker hinauslesen, Daten dort finden und sagen kann, dass etwas nicht stimmt.

Ein JPEG-Bild ist ein Bytestrom, der mit einem SOI-Marker beginnt und mit einem EOI-Marker endet.

ZIP und RAR sind Bytestreams. Ein ZIP-Stream beginnt mit 50 4B. Ein RAR-Stream beginnt mit 52 61 72 21 1A 07.

Die im obigen Link beschriebene Methode verwendet eine binäre Kopie von (mehreren) JPEG-Streams und hängt einen ZIP- oder RAR-Stream an sie an.

Die RAR/ZIP-Decoder scannen den Stream, bis sie die Signatur für RAR oder ZIP finden (ignorieren den JPEG-Stream).

+0

Und wie kommt Archieve-Programm JPEG-Daten zu überspringen, um zu arhieve. Woher weiß es, wo JPEG endet und Archivdaten beginnt? – yasar

+0

Er muss im Datenstrom nach einer eigenen Signatur suchen. Vermutlich würde dieser Trick mit den meisten binären Dateitypen funktionieren. Es wird also wahrscheinlich nicht das JPEG gescannt und nach dem EOI-Marker gesucht. – user3344003

3

Diese Antwort gibt nicht den genauen Fall in die Link-Adresse Sie gab, aber es bietet eine weitere Möglichkeit, Daten zu verstecken:

Es wäre auch theoretisch möglich sein, eine Datei innerhalb des Bildes selbst JPEG zu verstecken, aber man würde brauche ein kompliziertes Programm, um die codierten Daten zu schreiben und sie dann erneut zu lesen.

Grundsätzlich enthält ein JPEG-Foto viele Informationen, die sich für das menschliche Auge nicht bemerkbar machen würden. Stellen Sie sich vor, Sie haben ein Foto von einer Person in einem blauen Hemd. Wenn Sie das Hemd heranziehen, werden Sie sehen, dass es keine gleichmäßige blaue Farbe ist, sondern aus einer Vielzahl von Farbflecken besteht, von denen die meisten einen bläulichen Ton haben (aber manche können auch andere Farben haben). Sie könnten einige dieser Flecken leicht in einen etwas anderen Ton ändern und es würde keinen sichtbaren Unterschied zu dem Bild machen.

Ein cleveres Programm könnte einen Code in das Foto einbetten, indem Pixel auf subtile Weise in ein Muster umgewandelt werden, das Daten darstellt. Ein sehr einfaches Beispiel: Wenn der "Farbton" (d. H. Farbton) durch eine Zahl zwischen 0 und 255 dargestellt wird, könnten Pixel mit einem geraden Farbton ein "0" -Bit und Pixel mit einem ungeraden Farbton ein "1" -Bit darstellen. Es wäre für das menschliche Auge schwierig, einen solchen Unterschied im Bild zu erkennen.

Es ist eine alte Idee und dieser Artikel beschreibt, wie viele Daten auf diese Weise versteckt werden könnten: High capacity data hiding in JPEG-compressed images (2004)

0

gibt es einen einfachen Algorithmus, dass ich es mit Matlab umgesetzt. wenn du dein Bild auf 8 Bit aufteilst. Das höchstwertige Bit hat die wertvollsten Informationen und Sie können Bit 0 und Bit 1 ohne Änderung des Originalbildes entfernen. Sie können also Ihre Datei anstelle von Bit 0 und 1 ablegen. Ich habe diesen Algorithmus in anil.k.jain book gesehen.

1

Im Allgemeinen ist das Verstecken einer Datei in einer anderen Datei als Steganography bekannt. Die Methode, die in der Verbindung beschrieben wird, die Sie zur Verfügung stellten, verkettet einfach die .rar an das Ende der .jpg, die den Operator + verwendet, die Vorteil der unterschiedlichen Header jedes [email protected] user3344003 erklärt hervorragend, warum das in his/her answer funktioniert. Dies verzerrt das Bild nicht, da die Bilddaten unverändert bleiben.

Eine weitere gängige Methode zum Verbergen einer Datei in einem Bild besteht darin, das Least Significant Bit (LSB) jedes Bytes zu verwenden. Die Art und Weise, wie dies durchgeführt wird, besteht darin, jedes 8. Bit im Bitstrom des Bildes durch das nächste Bit der Datei zu ersetzen, die Sie ausblenden möchten. Dies funktioniert, weil die Farben des Bildes leicht verzerrt werden können, ohne vom menschlichen Auge leicht wahrgenommen zu werden. Bei diesem Ansatz wird die Größe des Images auf der Festplatte nicht so wie in der Methode von Ihrem Link aus wachsen. Dies macht den Nachweis der versteckten Datei viel schwieriger zu erkennen. Eine detaillierte Beschreibung dieser und anderer Steganographic-Methoden finden Sie unter this paper by Bret Dunbar.