Forum: Mikrocontroller und Digitale Elektronik Wie komprimiertes Grafikformat entschlüsseln?


von Bitte einen Namen eingeben oder einloggen. (Gast)


Lesenswert?

Eine monochrome 240x240 Grafik wird irgendwie komprimiert. Aus 57600 
Pixeln bzw. 7200 Bytes werden dadurch 3500-5500 Bytes, je nach Anzahl 
der schwarzen Pixel.
Ob die Daten verschlüsselt sind, weiß ich nicht.


Ich kann von verschiedenen Bildern komprimierte und unkomprimierte Daten 
erhalten.
Die Software zum Dekomprimieren könnte mit 'falschen' Daten gefüttert 
werden. Automatisieren aber schwierig.



Wie geht man bei sowas vor?

von Tcf K. (tcfkat)


Lesenswert?

Hallo "Bitte einen Namen eingeben oder einloggen.",
wie die Daten komprimiert sind, hängt schlicht vom verwendeten 
Bildformat ab. Normalerweise ist das an der Fileendung zu erkennen, 
notfalls mit einem Hex-Editor angucken. Z.B. bei .gif steht auch "GIF" 
als ASCII im File. Die Dekompressionssoftware prüft normalerweise die 
erwarteten Formate auf Integrität, und bricht bei Nichteinhaltung ab. 
Ein JPEG-Dekompressor kann kein GIF verarbeiten, usw.

von Karl H. (kbuchegg)


Lesenswert?

Bitte einen Namen eingeben oder einloggen. wrote:
> Eine monochrome 240x240 Grafik wird irgendwie komprimiert. Aus 57600
> Pixeln bzw. 7200 Bytes werden dadurch 3500-5500 Bytes, je nach Anzahl
> der schwarzen Pixel.
> Ob die Daten verschlüsselt sind, weiß ich nicht.
>
>
> Ich kann von verschiedenen Bildern komprimierte und unkomprimierte Daten
> erhalten.
> Die Software zum Dekomprimieren könnte mit 'falschen' Daten gefüttert
> werden. Automatisieren aber schwierig.
>
>
>
> Wie geht man bei sowas vor?

Es geht also darum, dass du rauskriegen musst, wie das
Bildformat aufgebaut ist. Da du eine unterschiedliche
Anzahl Bytes kriegst, ja nachdem wie das Bild aufgebaut
ist, liegt der Gedanke an eine Run Length Encoding nahe.
Kurz gesagt ist eine Run Length Encoding: Anstatt die
Pixel direkt darzustellen, steht im File: Jetzt kommen
25 schwarze Pixel gefolgt von 12 weissen Pixel, gefolgt
von 200 schwarzen Pixel, etc. Im File sind dann im Prinzip
die Zahlen  25 00 12 255 200 00  enthalten. Die Details
mögen variieren, kann auch sein, dass es überhaupt keine
Run Length encoding ist.

Wie geht man vor: Als erstes besorgst du dir mal einen
Hex Editor um in ein File auf Byte Ebene hinschauen zu
können.
Dann lässt du dir mal das allereinfachste Bild erzeugen:
Alle Pixel schwarz.
Das nächst einfache Bild: In der linken oberen Ecke (oder
rechts oben, oder links unten, oder rechts unten) ein
einzelnes weisses Pixel.
Wieder in den Hex Editor damit und mal mit dem 'Alles schwarz'
Bild vergleichen. Irgendetwas hat sich verändert. Aus den
Veränderungen kann man dann versuchen eine Hypothese zu bilden,
wie die Codierung aussieht. Mit der Hypothese verschiebt man
den weissen Punkt um ein Pixel, überlegt sich vorher welche
Erwartungen man hat, wie das ganze im File aussehen könnte
und sieht nach ob man recht hat. Und so gehts weiter, bis
man von jedem Byte im File erklären kann was es macht und
wie es zu seinem Wert kommt.

Viel Spass dabei. Das kann durchaus ein paar Tage (oder
Wochen) dauern, bis man alle Details herausgefunden hat.

von Bitte einen Namen eingeben oder einloggen. (Gast)


Lesenswert?

Danke für die Erklärung. Ich werde mal tun, was sich gucken lässt!

von yalu (Gast)


Lesenswert?

Wenn es sich um ein allgemein bekanntes Dateiformat handelt, kann der
Typ mit hoher Wahrscheinlichkeit mit Unix-/Linux-Befehl 'file'
ermittelt werden. Wenn nicht, würde ich es so versuchen, wie Karl
heinz vorgeschlagen hat. Sind die Daten (gut) verschlüsselt, hast du
wohl kaum eine Chance, sie zu entschlüsseln.

PS: Falls du kein 'file'-Tool zu Hand hast kann ich das gerne für dich
ausprobieren, wenn du hier eine Beispieldatei postest.

von Bitte einen Namen eingeben oder einloggen. (Gast)


Lesenswert?

file sagt, dass es sich um daten handelt.
Ich werd erstmal versuchen, vernünftig Daten zu sammeln. Ist aber nicht 
eilig. Danke.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.