Inhaltsverzeichnis:

Dieses PNG ist ein Geheimfach - Gunook
Dieses PNG ist ein Geheimfach - Gunook

Video: Dieses PNG ist ein Geheimfach - Gunook

Video: Dieses PNG ist ein Geheimfach - Gunook
Video: Crypt Protect bringt ArchiCrypt Live auf Smartphone und Tablet 2024, November
Anonim
Dieses ist ein Geheimfach
Dieses ist ein Geheimfach
Dieses ist ein Geheimfach
Dieses ist ein Geheimfach

Ihre Herausforderung, lieber Leser, besteht darin, herauszufinden, welche Nachricht in dem output.png-Bild verborgen ist, das ich für Sie auf github gestellt habe. Sie können dort den MessageHider-Code verwenden, um die Nachricht zu extrahieren. Wenn Sie verwirrt sind, kommentieren Sie bitte unten und ich helfe Ihnen, die Antwort zu erhalten! Sie können sogar sofort aufhören zu lesen, einfach zu github gehen, den Code abrufen und mit der Steganographie beginnen. Genug gesagt, aber bleib bitte dran und ich erzähle dir mehr.

Die beiden Bilder hier sehen identisch aus, sind es aber nicht. Dies sind die Bilder von greenman-p.webp

Dieses anweisbare ist von einem großen Youtube-Video inspiriert. Nachdem ich dieses Video eines Tages spät in der Nacht gesehen hatte und Schwierigkeiten hatte, an eine coole Vorlesung und eine Zwischenprüfung für einen fortgeschrittenen Java-Programmierkurs zu denken, war dieses Projekt geboren. Die obigen Bilder sind zusammen mit dem in dieser Anleitung beschriebenen Code auf Github kostenlos.

Lieferungen

Sie benötigen einen Computer und Sie müssen wissen, wie man ein Java-Programm kompiliert und ausführt. Dieses Programm besteht nur aus zwei kurzen Dateien und Sie müssen es auf der Befehlszeile ausführen.

Schritt 1: Was ist Steganographie?

Sie sollten sich das YouTube-Video ansehen, das ich im vorherigen Schritt verlinkt habe, aber hier ist die Zusammenfassung:

Wenn Sie eine geheime Nachricht an einen Freund verstecken müssen, ist Steganographie eine coole Möglichkeit. Die Idee der Bildsteganographie ist einfach; Computerbilder bestehen aus Pixeln, und jedes Pixel ist eine Kombination aus Rot, Grün und Blau. In vielen Computerbildformaten werden die Rot-, Grün- und Blauanteile in jedem Pixel als Werte von 0-127 ausgedrückt. So hätte beispielsweise ein sehr rotes Pixel einen Rotwert von 127 und Grün- und Blauwerte von Null. Der Trick ist folgender: Eine Rotintensität von 126 ist von einer Rotintensität von 127 (für das menschliche Auge) nicht zu unterscheiden. Durch Herumspielen mit plus oder minus eins in jedem roten Pixel können wir Bits in Pixeln ausblenden. Wenn wir einen heimtückischen Weg finden, die Bits wieder zu sammeln, können wir die Daten abrufen, die wir in das Bild eingeschmuggelt haben!

Seien Sie kreativ! Steganographie ist mit allen digitalen Medien möglich! Sie können zum Beispiel mit Bits in Musik- oder Videodateien spielen, aber dazu müssen Sie außerhalb des Rahmens dieser Anleitung mehr Nachforschungen anstellen.

Schritt 2: Wie Text auf Computern kodiert wird

Wie Text auf Computern kodiert wird
Wie Text auf Computern kodiert wird

Was hier folgt, erfordert möglicherweise einen Abschluss in CS oder viel Hobby-Leidenschaft, um es zu verstehen. Computer speichern Daten in Bits als 1 und 0. Diese Einsen und Nullen werden typischerweise in Bündeln von 8 gruppiert und als "Bytes" bezeichnet. Wie hier und hier erklärt, gibt es nur wenige Möglichkeiten, einen Computer anzuweisen, Bytes als Text zu interpretieren. Um das Beste aus dieser Steganographie-Vorlesung / Anleitung herauszuholen, müssen Sie ASCII und UTF8 mehr oder weniger verstehen. Dies sind zwei gängige Methoden zum Codieren von Sprachdaten in einer Reihe von Bytes.

Sobald Sie eine Vorstellung von diesem Thema haben, werden Sie Folgendes verstehen: In ASCII und UTF8 wird das Wort "the" durch die folgenden Bytes (in Hex) 0x74 0x68 0x65 dargestellt. Binär sind diese Bytes: 01110100b 01101000b 01101101b

Außerdem werden Sie verstehen, dass in UTF8 ein grinsendes Gesicht Emoji durch die folgenden Bytes (in Hex) 0xF0 0x9F 0x98 0x80 dargestellt wird. Binär sind diese Bytes 11110000b 10011111b 10011000b 10000000b.

Auf jeden Fall sehen Sie im beigefügten Screenshot, dass mein Computer etwas mit diesen Bytes macht. Ich habe sie in der Programmausgabe mit Pfeilen und einem großen "LOOK!" hervorgehoben.

Schritt 3: So funktioniert das Programm

Das Kompilieren des Programms von github ist einfach. Holen Sie sich das auf der Titelseite angezeigte Repo hier und dann

Das Programm wird wie folgt über die Befehlszeile ausgeführt: java Main input-p.webp

In den angehängten Beispielen sehen Sie, dass ich Java Main greenman-p.webp

Sie werden dasselbe tun.

Wenn Sie sich Main.java ansehen, werden Sie feststellen, dass Folgendes passiert:

  1. Das Programm liest das Bild in ein 2D-Array ein
  2. Das Programm wandelt die von Ihnen gelieferte Nachricht in ein Byte-Array (byte) um.
  3. Das Programm verwendet dann eine MessageHider-Klasse, um die Nachrichtenbytes im Bildarray auszublenden.
  4. Das Programm schreibt dann das 2D-Array des Bildes in eine Datei (output.png) mit den versteckten Daten darin. Wenn man sich dieses Bild anschaut, ist es vom Original nicht zu unterscheiden
  5. Das Programm liest dann output-p.webp" />

Der Code funktioniert also so ziemlich wie wir es erwarten.

Schritt 4: Fazit

Also habe ich Ihnen einen funktionierenden Code gegeben, einen Beweis dafür, dass er in Form eines Bildes funktioniert, und einige Vorlesungsnotizen, die ich meinen Universitätsstudenten gebe. Ich habe dich auch herausgefordert! Ich verbrachte ein paar Stunden damit, den Code zu schreiben und Vorlesungsnotizen vorzubereiten, also tut es mir leid, dass dieses instructable nicht viele Bilder hat. Wenn Sie der Meinung sind, dass Steganographie interessant ist, nehmen Sie bitte meine Herausforderung an!

Empfohlen: