JavaScript in Jpg-Bildern komprimieren

Bereits 2008 hatte Jacob Seidelin alias Nihilogic gezeigt wie es möglich ist JavaScript in einem Bild zu speichern. Für den 10K Apart Wettbewerb griff Alex Le diese Idee wieder auf. Grund dafür war die verlustfreie Kompression des Jpg-Bildes und der damit gewonnene Speicherplatz. Ziel des Wettbewerbs ist es ein möglichst effizientes Programm zu schreiben, dass eine Speicherplatzgröße von 10 Kilobyte nicht überschreitet.
Das Problem jeder Kompression ist es, dass hierfür ein Algorithmus nötig ist, der wiederum Speicherplatz benötigt. Das geniale an der Idee, den Code in einem Jpg zu speichern, ist der integrierte Kompressionsalgorithmus im Webbrowser. Da jeder Webbrowser bereits Jpg-Bilder dekomprimieren kann wird kein zusätzlicher Code dafür benötigt. Um das erstellte Bild wieder in Code umzuwandeln wird dieses in einem Canvas-Objekt gezeichnet. Der Webbrowser übernimmt dabei die Dekompression. Anschließend kann der Code aus dem Canvas ausgelesen und benutzt werden.

Um das Bild erst einmal zu erstellen ist jedoch auch etwas Aufwand nötig. Zuerst müssen alle Dateien, wie CSS, Javascript oder HTML eingelesen und in eine Zeichenkette umgewandelt werden. Die Zeichenkette wird anschließend komprimiert und als Bild abgespeichert.
Alex Le hat auf seiner Webseite ein Buildscript veröffentlicht um diesen Vorgang zu automatisieren.

Eines sei noch erwähnt: Mit der hier vorgestellten Methode ist es nur bedingt möglich Schadcode auf einer Webseite zu verstecken. Der in dem Bild enthaltene Code wird nicht automatisch ausgeführt, sondern muss durch einen anderen Script geladen werden. Es macht keinen Unterschied ob der Code in die Webseite oder in einem eingebetteten Bild steckt. Ohne eingeschaltetem JavaScript kann dieser nicht gestartet werden.
Bookmark and Share

0 Kommentare:

Kommentar veröffentlichen