# Tragic Magic `Tragic Magic` ist eine Forensik-Challenge, die eine beschädigte Bilddatei beinhaltet. Uns wird eine Datei namens `flag.png` zur Verfügung gestellt, sowie ein Hinweis, dass das Dateiübertragungsprotokoll die Binärdaten beschädigt haben könnte. ## Informationsbeschaffung Wir beginnen damit, den Dateityp mit dem `file`-Befehl zu identifizieren: ```bash $ file flag.png flag.png: data ``` Der `file`-Befehl sagt einfach "data", was bedeutet, dass er die Dateisignatur (Magic Bytes) nicht erkennt. Wenn wir versuchen, das Bild mit einem Viewer zu öffnen, wird dies fehlschlagen. ## Analyse Untersuchen wir die ersten paar Bytes der Datei mit `xxd`: ```bash $ xxd -l 16 flag.png 00000000: 5550 4e47 4141 1a0a 0000 000d 4948 4452 UPNGAA......IHDR ``` Wir können die Strings `PNG` und `IHDR` in der ASCII-Darstellung deutlich sehen. `PNG` ist Teil der Standard-Dateisignatur, und `IHDR` ist der obligatorische erste Chunk jeder gültigen PNG-Datei. Dies bestätigt zweifelsfrei, dass die Datei als PNG-Bild gedacht ist. Die "Magic Bytes" (die 8-Byte-Dateisignatur) ganz am Anfang sind jedoch inkorrekt. **Gültige PNG-Signatur:** `89 50 4E 47 0D 0A 1A 0A` (`.PNG....`) **Unsere Dateisignatur:** `55 50 4E 47 41 41 1A 0A` (`UPNGAA..`) Die Signatur wurde teilweise beschädigt: - `89` wurde zu `55` ('U') - `0D 0A` (Windows Newline) wurde zu `41 41` ('AA') Dies passt zum Hinweis über ein "optimales ASCII-Protokoll", das die Binärdaten verunstaltet. ## Lösung Wir müssen den Datei-Header reparieren, damit Bildbetrachter ihn erkennen können. 1. Öffnen Sie `flag.png` in einem Hex-Editor. 2. Suchen Sie die ersten 8 Bytes. 3. Ersetzen Sie sie durch die Standard-PNG-Signatur: `89 50 4E 47 0D 0A 1A 0A`. 4. Speichern Sie die Datei. Alternativ können wir `printf` verwenden, um den Header über die Befehlszeile zu überschreiben: ```bash printf "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A" | dd of=flag.png bs=1 count=8 conv=notrunc ``` Nach dem Fixen des Headers wird die Datei korrekt erkannt: ```bash $ file flag.png flag.png: PNG image data, 256 x 256, 8-bit/color RGB, non-interlaced ``` Das Öffnen des wiederhergestellten Bildes enthüllt die in den Pixeln geschriebene Flagge: `{flag: corrupted_png_header}`