www.mikrocontroller.net

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


Autor: Bitte einen Namen eingeben oder einloggen. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tcf Kat (tcfkat)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bitte einen Namen eingeben oder einloggen. (Gast)
Datum:

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

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bitte einen Namen eingeben oder einloggen. (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.