Wenn man sich “version1.png” der Challenge “Forensics 200” (Part 1) im Editor anschaut fällt sofot ins Auge, dass im PNG File jede menge TextComments mit dazugehörigen Namen in folgendem Format existieren:
tExtcomment^@key{…….}
Mit “strings” und “grep” wird das ganze erstmal in lesbare Form gebracht.
=> strings version1.png | grep key
Da das ganze immer noch nicht übersichtlich genug ist, wird das ganze verfeinert und nur die Namen in keys{….} sortiert ausgegeben.
Die Sortierung ist dabei völlig optional und nur zum besseren Verständis gedacht.
Zusätzlich wird der Output in einer Datei “persons1.txt” gespeichert.
=> strings version1.png | grep key | sed -e ‘s/key{\(\w*\s\w*\)}.*/\1/’ | sort > persons1.txt
Wenn man sich das ganze noch einmal im Editor anguckt, stellt man fest, dass es sich um 500 Namen handelt. Nun ist die Frage was man mit diesen Erkenntnissen anfangen kann. Ehrlich gesagt? Noch nicht viel. (One Thing is not like the Other …) Somit muss man weiter graben. Hierzu eignet sich hervorragend das Tool “pnginfo”, welches im Paket “pngtools” enthalten ist.
=> pnginfo version1.png
Hierbei stellt man schnell fest, dass lediglich 499 Namen ausgegeben werden.
Einer von den Namen kann nicht angezeigt werden = CRC error. Mit den Tools “grep”, “sed” und “sort” speichert man auch diese Namen in eine Datei “persons2.txt”.
=> pnginfo version1.png | grep key | sed -e ‘s/ comment (tEXt uncompressed): key{\(\w*\s\w*\)}.*/\1/’ | sort > persons2.txt
Zu guter letzt vergleicht man die beiden Files mit “diff”, um den oben erwähnten (gesuchten) Namen mit CRC error zu finden.
=> diff persons1.txt persons2.txt
Somit ist der Key: takeuchi gregory
PS: Es gibt noch einen schnelleren Weg, indem man direkt das Tool “pngcheck” benutzt.
Dieses ist jedoch ein eigenständiges Tool, welches nicht im Paket von pngtools enthalten ist. “pngcheck” prüft ein PNG File auf CRC error, was allein ist nicht sehr nützlich ist.
Wenn man “pngcheck” allerdings mit dem Parameter -7 aufruft, werden bis zum Abbruch des CRC error jegliche tEXt Chunk Daten ausgegeben.
=> pngcheck -7 version1.png
Somit ist der Key: takeuchi gregory