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.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
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.
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.