PNG Bilder aus Dateien und Streams extrahieren

Das folgende Snippet zeigt Go Code welcher PNG aus Dateien extrahiert.
findPngs.go

Einfach den Code in eine Datei (z.B. findPngs.go) speichern und mit:

go build findPngs.go

kompilieren. Nun kann das Tool mit folgendem Aufruf benutzt werden:

findPngs.exe -f "c:\pfad\zum\dump.dmp"

Wobei mit -f der Pfad zur Datei gemeint ist aus dem gelesen werden soll. Die gefundenen PNG-Dateien werden in das Verzeichnis geschrieben welche die findPngs.exe enthält.

 

Beispiel – Memory Dump

Als Quelle soll ein Memory Dump von des Google Chrome Browser also der Chrome.exe dienen. Hierzu erstellt man einen Dump am einfachsten über den Task Manager:

1. Prozess auswählen
2. Rechtsklick “Speicherabbild erstellen” bzw. “Create dump file”
3. Warten bis das Abbild geschrieben wurde und die Meldung mit dem Pfad erscheint.

TaskManager_memory_dump_erstellen

Der Dump wurde geschrieben:
TaskManager_memory_dump_erstellt

Der Pfad wird dem findPng-Tool mit dem Parameter -f übergeben:
findPngs_aufruf

Das Ergebnis sind (bei chrome.exe) 1629 png Dateien:
findPngs_ergebnis

Beispiel – TCPDump

Mit tcpdump können Mitschnitte aller Netzwerkverbindungen in eine Datei mitschneiden. Diese lässt sich wiederum in das findPngs Tool einslesen.
Das Windows äquivalent zu tcpdump ist windump mit identischen Parmaetern.
Windump von WinPcap.org

Ein Beispiel:
1. Den Netzwerkverkehr mitscheiden mit
windump -i 2 -s 0 -w out.pcap
Wobei die “-i 2” die 2te Netzwerkverbindung ist (eine Liste aller Netzwerkverbindungen gibt es mit windump -D).
“-s 0” bedeutet das die Pakete im Vollständig geschrieben werden und “-w” gibt schließlich die Ausgabe an.

windump_capture

Nun die Datei an “findPngs” übergeben und das die Bilder extrahieren:
findPngs_windump

(Bilder nach einem Besuch von: http://forum.nim-lang.org/)

Natürlich können die Bilder nur extrahiert werden wenn diese nicht SSL verschlüsselt oder GZIP verpackt sind aber zumindest gegen letzteres kann man das Programm erweitern.

Kommentar hinterlassen