Stepic - Steganografi med Python
Jag satt och letade efter Pythonbibliotek för att generera och manipulera bilder och grafik, och sprang då på en artikel om ett bibliotek kallat Stepic. (Ja, artikeln är från februari så den är inte purfärsk.)
Stepic är ett Pythonbibliotek (och applikation) för bildbaserad steganografi. Bibliotekets enda class Steganographer har två publika metoder encode och decode för att gömma och extrahera information lagrad i bilder. Artikeln innehåller ett par exempelbilder:

Bild 1: Orginalbild innan data gömts i bilden.
Data har sedan gömts i bilden som då ser ut så här:

Bild 2: Samma bild, men med steganografiskt lagrad data.
Ser du skillnaden?
Jag körde en enkel md5-hash på bilderna för att se att dom skiljer:
MD5 (stepic-demo-before.png) =
ce5e5482d3ba9c5ed59f00820825f71a
MD5 (stepic-demo-after.png) =
b9cb6c127423fe82e08b40348a4ba116
(Bilderna skiljer även i storlek så egentligen säger inte md5 så mycket mer…)
Källkoden till Stepic finns på nätet och tittar man i koden ser det ut som att datat lagras med start i början bilden och sedan påverkas så många pixels som krävs för att koda in datat. Själva kodningen ser ut att vara en enkel/linjär förändring av intensiteten applicerad på 3×3 pixel stora kernels.
October 21st, 2007 at 7:57 pm
Kul inlägg. Tyvärr är det ganska uppenbart att någonting lagrats i de minst signifikanta bitarna om man analyserar bilden. Här är en version av stepic-demo-after.png där endast den lägsta biten i varje bildelement visas:
http://farm3.static.flickr.com/2152/1668638117_4eb5eeb944_o.png
Det är uppenbart att den översta delen av bilden behandlats på något vis. En uppenbar utökning vore att använda padding med kryptografiska slumptal för att få hela bilden att påverkas.
October 22nd, 2007 at 12:10 am
Vill du se skillnaden med blotta ögat så öpnna båda bilderna i ett redigeringsprogram, t ex. Gimp. I orginalbilden skapar du ett nytt lager och ställer blandningsläget till skillnad. Platta sedan ut bilden och använd verktyget nivåer och ställ det övre värdet till 3 (allt över 3 blir då vitt = 255). Viola! Det är givetvis fortfarande inte läsbart, men du ser skillnaden.