Skip to content

Animated GIF

SelinaWernike edited this page Feb 4, 2021 · 1 revision

GIF

  1. Allgemein
  2. Nutzung
  3. Color Couple

Allgemein

Die Klasse AnimatedGIF kann animierte GIFs steganographisch bearbeiten. Dafür wird das GIF in seine einzelnen Frames aufgeteilt und die Payload wird in diese Frames codiert. Dafür verwendet die Klasse den sogenannten Color-Couple-Algorithmus. Das GIF wird nach der Encodierung der Nachricht in die Frames wieder zu einem animierten GIF sequenziert.


Nutzung

Animierte GIF lassen sich über die Klasse AnimatedGIF steganographisch bearbeiten.

//Variables
byte[] payload = "HelloWorld".toBytes() // Message to hide
byte[] animatedGif = Files.readAllBytes(file.toPath()); //Load gif from file

//Encode 
AnimatedGif gifUtil = new AnimatedGif();
byte[] hiddenAnimatedGIF = steganography.encode(animatedGif, payload);

// use of a seed
int seed = 123456789;
byte[] seededAnimatedGIF = steganography.encode(animatedGif, payload, seed)
-----------------------------------
// Decode
byte[] payload = steganographie.decode(hiddenAnimatedGif);
// decoding with a seed
int seed = 123456789; // has to be the same as used in encoding
byte[] seededAnimatedGIF = steganography.decode(hiddenAnimatedGif, seed)

Color-Couple-Algorithmus

Funktionsweise

GIF besitzen, im Gegensatz zu PNG oder JPEG eine 8 Bit tiefe. Jede Farbe im Bild wird mit 8 Bit wiedergegeben. Das heisst aber nicht das alle GIFs die gleiche 256 teilige Farbpalette besitzen. In den meisten Fällen besitzt ein GIF eine Farbtabelle, welche in den Metadaten definiert ist. Diese Tabelle besitzt bis zu 256 Farben die jeweils als RGB Wert gespeichert sind. Diese Tabelle wird bei der Codierung referenziert. Daher ist es nicht möglich die Farben beliebig zu verändern, wie bei einem PNG. Statdessen wird die Tabelle vom GIFTableDecoder ausgelesen und für jede Farbe wird versucht ein ColorCouple zu finden.

Algorithmus:

  1. Eine Farbe wird aus Tabelle gelesen
  2. Farbe wird mit allen Farben aus der Tabelle verglichen
  3. Farben die wenig Unterschied haben (max. 8 Bit) und eine andere Parität werden in einer HashMap gespeichert
  4. Mit dieser Hashmap wird das Bild mithilfe des Pixel-Bit-Algorithmus encodiert.
  5. Für das Decodieren muss nur noch der Pixel-Bit-Algorithmus verwendet werden

Einschränkung

Dadurch, dass der Algorithmus auf der Farbtabelle basiert sind nicht alle GIFs geeignet. GIFs die nur lokale Farbtabellen besitzen funktionieren nicht. Enthält die Farbtabelle nur wenige Farben oder nur Faben die die Bedingung in 3 nicht erfüllen kommt keine Encodierung zu stande. Je nach ANzahl vorhandener Farben können unterschiedlich viele Byte koodiert werden. Sind alle Farben im Bild sehr unterschiedlich wird kein ColorCouple zustande kommen. Sind sich die Farben recht ähnlich gibt es mehrere Colorcouple und es können mehr byte im GIF versteckt werden.

Home

Docs

Deployment

Usage Guide

Steganography

SocialMedia

Erweiterung

Beispielanwendung

Clone this wiki locally