2013-10-10 16 views
5

Ich habe einen Dienst erstellt, der Text in Fotografien versteckt. Zum Beispiel:Verstecken von Geheimnissen in Fotografien mit PHP

$img_name = "myimage.jpeg"; 
$orig_contents = file_get_contents($img_name); 
$msg = "My secret."; 

$fp = fopen($img_name, "wb"); 
fwrite($fp, $orig_contents . $msg); 
fclose($fp); 

Ich bin gespannt: Wie viel Informationen kann ich in Fotografien mit dieser Methode verstecken? Könnte ich beispielsweise Kapitel eines Romans in eine Bilddatei einbetten? Ich habe ziemlich große Textblöcke hinzugefügt, ohne das Bild zu verfälschen, aber ich frage mich, ob PHP oder Bildanzeigeanwendungen diesem Grenzen setzen.

(P. S. Ich bin mir bewusst, dass diese Art von Steganographie unsicher ist, ich mache das nur zum Spaß.)

+0

was für eine seltsame Sache zu tun ...! –

+0

klingt wie etwas, das Sie einfach selbst testen könnten –

+0

Haha. Komm schon Mann. Es macht viel Spaß, Nachrichten unter Freunden auszutauschen. :) Wenn jemand konstruktive Vorschläge hat, würde ich es sehr schätzen. – hawkharris

Antwort

7

Sie sollen bei Steganography einen Blick darauf werfen. Und seien Sie sich bewusst, dass Sie Ihre Daten nicht im Bild verstecken. Jeder, der das Bild mit einem Texteditor öffnen könnte, würde Ihren Text irgendwo in der Datei sehen (in diesem Fall am Ende, was viel schlimmer ist). Wenn ich Sie wäre, würde ich folgendes tun:

  1. Verschlüsseln Sie Ihre Daten mit einem gewissen decent Algorithm und starke Schlüssel
  2. Erstellen Sie eine Funktion, die Ihre Daten durch die Datei in einem Pseudo verteilt -random so dass irgendjemand merken würde, dass du versuchst, etwas geheim zu halten (achte darauf, dass du es danach wiederherstellen musst). In einem normalen Bitmap-Bild können Sie das letzte Bit jedes Pixels verwenden, um Ihre Informationen zu speichern, da diese Änderung durch das menschliche Auge nicht wahrgenommen würde, wenn Sie das ursprüngliche Bild mit dem Bild mit versteckten Daten vergleichen.
  3. Bete NSA ist dies nicht zu lesen, sonst Sie einige ernsthafte Probleme :)
  4. bekommen
+1

sein sollte Mitglied der NSA - zu spät. –

+0

+1 für den 3. Punkt. –

0

ich denke, das nicht der sicherste Weg ist, es zu tun, wenn Sie wirklich Zeichenfolge in ein Bild verstecken wollen, Sie werden wahrscheinlich ein bestimmtes Muster verwenden, um ein Pixel alle 10 Pixel zu ändern, die Idee ist einfach konvertieren Sie Ihr Bild in ein Array von Ganzzahl, Schleife durch das Array und alle 10 Pixel ändern den Wert auf die ascii character Nummer.

Die Änderung von 1 je 10 Pixel wird nicht viel Lärm machen.

Um die Verschlüsselung sicherer zu machen, verwenden Sie Ihre eigene Karte, um ASCII zu kodieren, wie @fvdalcin vorgeschlagen.

4

Nein, es gibt praktisch keine Beschränkung durch PHP oder JPEG format, wie viele Daten Sie mit dieser Methode zu einem Bild hinzufügen können. Dies funktioniert, weil das JPEG-Format alle Bilddaten am Anfang der Datei bis zu einem Marker speichert. Nach der Markierung wird angenommen, dass irgendwelche Daten etwas anderes sind, wie beispielsweise ein Miniaturbild.

Ein cool trick (das auch mit GIF-Bildern funktioniert) ist, dass Sie eine ZIP-Datei an das Ende eines Bildes anhängen können und die Datei sowohl als JPEG- als auch als ZIP-Datei funktioniert. Es wird sowohl von Bildverarbeitungsprogrammen als auch von ZIP-Programmen gelesen, indem nur die Dateiendung geändert wird.