Seite 1 von 1

PNG Steganographie

Verfasst: Samstag 20. Juni 2015, 15:41
von nooby
Hallo Leute :)

Ich habe eine Frage bezüglich Steganographie.
Ich habe von einem Freund eine PNG Datei mit einer versteckten Nachricht erhalten (eine Art Spiel).
Leider kriege ich es nicht hin diese Nachricht zu finden.
Ich habe bereits versucht die Rot/Blau/Grün Werte in Buchstaben umzuwandeln wie hier: https://www.daniweb.com/software-develo ... age-python. Das ganze hat jedoch keinen Sinnvollen Text gebracht. Außerdem habe ich versucht immer die Nachricht in den Least Significant Bits gesucht.
Auch das hat nicht funktioniert.
Den Code dazu seht ihr unten.
Falls ihr irgendeinen Tipp für mich habt bin ich euch dankbar :)

Code: Alles auswählen

def decode(img):
    text = ""
    character = ""
    height, width = img.size
    for row in range(height):
        for col in range(width):
            r, g, b, a = img.getpixel((row, col))
            print(a)
            r = bin(r)[-1]
            g = bin(g)[-1]
            b = bin(b)[-1]
            if len(character) == 8:
                character = int(character, 2)
                text += chr(character)
                character = r + g + b
            elif len(character) == 7:
                character += r
                character = int(character, 2)
                text += chr(character)
                character = g + b
            if len(character) == 6:
                character += r
                character += g
                character = int(character, 2)
                text += chr(character)
                character = str(b)
            else:
                character += r
                character += g
                character += b
    return text

Re: PNG Steganographie

Verfasst: Samstag 20. Juni 2015, 19:33
von darktrym
Gib doch mal das Bild.
Üblicherweise kodiert man die Länge des Payloads am Anfang und dann folgen die Daten. Da nicht mal klar ist ob überhaupt ASCII verwendet wird, ist das ein Rätsel.

Re: PNG Steganographie

Verfasst: Samstag 20. Juni 2015, 21:38
von Sirius3
@nooby: weißt Du denn, dass die Nachricht jeweils im untersten Bit in dieser Reihenfolge gespeichert ist?

Re: PNG Steganographie

Verfasst: Samstag 20. Juni 2015, 23:02
von nooby
Nein, ob die Nachricht im untersten Bit gespeichert ist weiss ich nicht.
Das sind einfach die Dinge, die mir eingefallen sind das Bild darauf zu untersuchen.

@darktrym: Das Bild kann ich dir sonst per PN senden. Aber ich wil ja nicht das Jemand das Rätsel für mich löst :)
Ich suche einfach nach neuen Ideen..

Re: PNG Steganographie

Verfasst: Samstag 20. Juni 2015, 23:12
von Sirius3
@nooby: es gibt halt eine große Anzahl an Möglichkeiten, erst alle roten Bits, dann alle blauen, dann alle grünen, oder nur jede zweite Zeile, alle Spalten von rechts nach links, usw.

Wurde der Text irgendwie verschlüsselt, ist es so gut wie unmöglich. Sonst ist es ja so, dass das höchste Bit bei Text so gut wie nie gesetzt ist, also kannst Du nach Mustern von nicht gesetzten Bits suchen.

Re: PNG Steganographie

Verfasst: Samstag 20. Juni 2015, 23:23
von nooby
@Sirius3: Der Text ist soweit ich weiss nicht verschlüsselt.. Gibt es eine Technik die Suche einzugrenzen?
Z. B. in Photoshop durch das ausblenden eines Kanals oder ähnliches?

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 00:27
von darktrym
Du kannst dir ja von PIL die ersten 20 Tupel ausgeben lassen. Wenn du davon die Binärdarstellung mit fester Länge mal anschaust sollten die offs. Varianten ausgeschlossen werden können. Bedenke aber der gute könnte auch einen eigenen Zeichensatz nehmen welcher nur 5Bits braucht.

Es gibt auch Varianten wo die untersten 2 Bits verwendet werden.

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 00:50
von nooby
Ich habe mir jetzt ein Programm geschrieben, welche alle Bits vor dem LSB auf 0 setzt.
Ist das LSB 1, so wird dieses auf 255 gesetzt.
Jedoch weiß ich jetzt nicht, auf was die Farben hindeuten. Ich lade ein mal einen kleinen Ausschnitt hoch.

Vielen Dank für eure Mühen!

Original:
http://postimg.org/image/evakwytc9/

LSB:
http://postimg.org/image/g3mf86dkx/

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 01:00
von BlackJack
@nooby: Die Frage ist ob die *Farben* irgend etwas bedeuten. Schau Dir doch mal die Bits an. Diese Linie aus Punkten am oberen Rand sieht ja schon mal nach Daten aus, denn bei einer Zeichnung sollte das rein weiss sein.

Edit: Wobei das Bild ja eher nach Hausaufgabe aussieht. ;-)

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 01:04
von nooby
Ja, das werde ich machen.
Ich versichere dir, das ist keine Hausaufgabe :)
Fürs Studium bin ich dann doch noch zu jung :mrgreen:

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 01:31
von nooby
Kann es sein, dass ich ein Fehler in meinem Code habe und ihn nicht bemerke?..
Denn ansonsten ist der Text garantiert nicht im ASCII Code. Was ich für die ersten 512 Pixel erhalte ist kompletter Müll...

Code: Alles auswählen

text = ""
character = ""
height, width = img.size
for row in range(1):
    for col in range(512):
        r, g, b, a = img.getpixel((col, row))
        r = bin(r)[-1]
        g = bin(g)[-1]
        b = bin(b)[-1]
        a = bin(a)[-1]
        
        if len(character) == 8:
            text += chr(int(character, 2))
            character = r + g + b + a
        elif len(character) == 7:
            character += r
            text += chr(int(character, 2))
            character = g + b + a

        elif len(character) == 6:
            character += r + g
            text += chr(int(character, 2))
            character = b + a

        elif len(character) == 5:
            character += r + g + b
            text += chr(int(character, 2))
            character = a
        else:
            character += r + g + b + a
Text:
'\x7fþÿÞÿþÿÞûßÿÞ\x7fßÿþÿþÿþûþÿþûþÿþûþÿþûÿ\x7fþûþ\x7fþûßÿÞÿþÿþ\x7fßÿþûþÿþûß\x7fþûþ\x7fþÿþÿþ{Þ\x7fÞ\x7fßÿÞÿÞÿþûß\x7fþ{Þ\x7fÞ\x7fÿ\x7fþÿÿ\x7fþûß\x7fþ{þÿþûÞ\x7fþûÿ\x7fþ\x7fÞÿþÿÿ\x7fþ\x7fþ\x7fþ\x7fÿ\x7fþûß\x7fþ{Þ\x7fÞ\x7fÿ\x7fþûþ\x7fþ{þ\x7fþ{þ\x7fþûß\x7fþ{ß\x7fþ{Þ\x7fÞûþ\x7fþ{ß\x7fþ{þûþ{Þ\x7fÞûÞ\x7fÞ\x7fÿ\x7fþûÞ\x7fþûÿ\x7fþ{Þ\x7fÞÿÞÿþ{þÿþûÞ\x7fþ\x7fÞÿþÿþ\x7fþ\x7fÿ\x7fþÿÿ\x7fþÿÞ\x7fþ{Þ\x7fÞÿÿ\x7fþÿÿ\x7fþÿÿ\x7fþ\x7fß\x7fþ{Þ{'

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 09:05
von darktrym
Ich versteh ich immer noch nicht, was denn Nutzdaten sind. Lass dir mal die Daten ausgeben wie folgt.

1. Pixel Komp. 1 Komp. 2. Komp. 3
2. Pixel Komp. 1 Komp. 2. Komp. 3

Und die Reihenfolge der Informationen ist natürlich entscheidend. Möglicherweise auch spiegelverkehrt, je nachdem wie man rangeht.

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 11:10
von nooby
Die Pixel-Daten sind wie folgt.
Pixel 0 R: 254
Pixel 0 G: 255
Pixel 0 B: 255
Pixel 0 A: 255
Pixel 1 R: 255
Pixel 1 G: 255
Pixel 1 B: 255
Pixel 1 A: 255
Pixel 2 R: 255
Pixel 2 G: 255
Pixel 2 B: 255
Pixel 2 A: 255

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 12:28
von Sirius3
@nooby: wie Du ja schon selbst gesehen hast, ist in der ersten Zeile Deines Bildes etwas komisch. Statt reinem Weis sind die letzten Bits mal gesetzt mal nicht. Und wie Du inzwischen auch herausgefunden hast, gibt es bei PNG-Dateien nicht nur RGB sondern auch noch A. Wenn Du Dir jetzt Deine Decodierversuche anschaust, siehst Du, dass statistisch gesehen viel zu viele 1 vorkommen. Das heißt, nicht jedes letzte Bit enthält Information sondern nur ausgewählte. Du mußt also ein Muster finden, welche Bits relevant sind. Aber jetzt habe ich schon genug verraten.

Willst Du eigentlich an das Passwort einer verschlüsselten ZIP-Datei kommen?

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 12:34
von nooby
@Sirius3: Hmm..okay danke..
Werd ich mich nochmals dran setzen.
Nein, es ist kein Passwort oder so. Also nicht das ich wüsste..
Hast du die Nachricht denn schon entschlüsselt?

Re: PNG Steganographie

Verfasst: Sonntag 21. Juni 2015, 15:42
von nooby
@Sirius3: Falls du das ganze gelöst hast, so habe ich noch eine Frage.
Es ist möglich, dass ich ebenfalls auf die Lösung gestoßen bin. Aber alles ist mir noch nicht klar.
Den Text denn ich erhalte ist in Anagramm form. Und einiges davon ist mir nicht klar.
Kann ich dir den Text per PN zu kommen lassen?

Besten Dank

Nooby

//Edit:
Sorry war ein Dummerfehler..
Die Aufgabe ist gelöst!
Besten dank allen. Ist echt ein Top Forum hier!