KRY. Projekt č. 2. Kamil Dudka xdudka00

Podobné dokumenty
Projektč.3dopředmětuIZP. Maticové operace

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Integrovaný informační systém Státní pokladny (IISSP) Dokumentace API - integrační dokumentace

Simluátor Trilobota. (projekt do předmětu ROB)

SEMESTRÁLNÍ PROJEKT Y38PRO

Angličtina program k procvičování slovní zásoby

TÉMATICKÝ OKRUH Softwarové inženýrství

Návod k práci s programem MMPI-2

Testování prvočíselnosti

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Podpora skriptování v Audacity

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Disková pole (RAID) 1

Elektronická podpora výuky předmětu Komprese dat

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Semestrální práce 2 znakový strom

Software pro formování dielektrika kondenzátorů

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Reranking založený na metadatech

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Vyřešené teoretické otázky do OOP ( )

Princip funkce počítače

Lekce 01 Úvod do algoritmizace

C# konzole Podíl dvou čísel, podmínka IF

Úvod. Programovací paradigmata

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Příručka pro aplikaci KSnapshot

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

12 Metody snižování barevného prostoru

Uživatelský manuál. Program OK MIFARE je program pro čtení a zápis dat na karty Mifare S50 (1k) na karty Mifare S70 (4k).

STRUKTURA RASTROVÝCH DAT

Změny a opravy v systému DUNA MZDY, verze

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Úvod do programování. Lekce 1

Racionální hnojení Zpráva o výsledcích AZZP

LZ77 KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU LZ77. Příručka uživatele a programátora

Geis Point Plugin Map

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/ MS Excel

SPINEL. Komunikační protokol. Obecný popis. Verze 1.0

Disková pole (RAID) 1

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018

Projekt. Sestavení projektu

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze

Mezipaměti počítače. L2 cache. L3 cache

NOVINKY v PROGRAMU DOCHÁZKA ADS

Komprese a dotazování nad XML dokumenty

ANOTACE vytvořených/inovovaných materiálů

Návrh designu: Radek Mařík

NEWSLETTER systému PRACANT

Vytvoření tabulky: V následujícím okně si editujete okno tabulky. Vyzkoušejte si viz podklad Cv_09_Podklad_tabulka.xls a Cv_09_Tabulka.dwg.

Výsledky experimentů předmětu Komprese dat

Uživatelská příručka na software Protech KORADO

Experimentální systém pro WEB IR

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Formulář pro křížový filtr

Základní práce v souborovém manažeru

Zobrazte si svazy a uspořádané množiny! Jan Outrata

verze platná od

13 Barvy a úpravy rastrového

Hodnoticí standard. Programátor (kód: M) Odborná způsobilost. Platnost standardu. Skupina oborů: Informatické obory (kód: 18)

Knihovna SBUS. Implementace neúplných protokolů S-BUS pro stanici server, paritní a datový mód

FORTANNS. 22. února 2010

DUM 06 téma: Tvorba makra pomocí VBA

PROGRAM RP31. Niveleta zadaná tečnami. Příručka uživatele. Revize Pragoprojekt a.s

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Semestrální práce Mozaika aneb Co všechno umí pan Voronoi

Webové stránky. 16. Obrázky na webových stránkách, optimalizace GIF. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

TransKlim ver.1.13 Uživatelská příručka pro verzi 1.13

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

DigiDepot: JPEG 2000 jako ukládací formát

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Základní popis Toolboxu MPSV nástroje

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

ADS DOCHÁZKOVÝ SOFTWARE

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

POČÍTAČOVÁ GRAFIKA. Počítačová grafika 1

Vysoké učení technické v Brně Fakulta informačních technologií ITP Technika personálních počítačů Služby ROM BIOS a BootROM

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

M4 PDF rozšíření. Modul pro PrestaShop.

Kompatibilita a import CAD

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu

HELIOS - Zálohování BüroKomplet, s.r.o.

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Adobe Photoshop 18. Ukládání dokumentu formáty

Databáze prodejců. Tlačítka. Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce Uloží nového prodejce nebo změnu (Alt+U);

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

EVI 8 - Autovraky Přehled plnění cílů opětovného použití

Systém adresace paměti

Semestrální práce KIV/PC

Dynavix 10: Evidence jízd

Vyčtení / zapsání hodnot z/do OMC8000 pomocí protokolu UDP

Artlingua Translation API

Transkript:

KRY Projekt č. 2 Kamil Dudka xdudka00

1 Úvod Úkolem bylo vytvořit program, který do určeného obrázku umí schovat text a tento text z obrázku později vytáhnout. Schovaný text měl být zabezpečený pomocí redundantního kódování a chráněný hashem. Navržený a implementovaný program byl rozšířen tak, aby do obrázku uměl schovat jakákoliv data. Pomocí programu lze tedy do obrázku ukládat text, ale kromě toho také jakýkoliv binární obsah, např. spustitelný soubor. 2 Objektový model Na obrázku 1 je vidět objektový model programu. Na vrcholu hierarchie tříd je rozhraní IBlkIO, které funguje jako abstrakce blokového přístupu. Tohle rozhraní implementuje třída ImageBlkIO, která umí číst/zapisovat bloky dat z/do obrázku. Zbývající třídy představují tzv. dekorátory [1], které pracují s rozhraním IBlkIO. Tyto dekorátory implementují různé další funkciona- Obrázek 1: Rozhraní IBlkIO a jeho implementace lity, přičemž zachovávají původní rozhraní. Dekorátory jsou potom zřetězeny (podle obrázku) v pořadí zleva doprava. Třída HamDecorator zajišťuje kódování/dekódování bloků pomocí Hammingova kódu. Třída LenDecorator se stará o uložení/načtení délky přenášených dat tím je umožněno přenášení binárních dat. Na konci řetězce dekorátorů je třída HashDecorator, která umí pracovat s hash funkcí md5. Při ukládání dat do obrázku je ulo- 1

žen také hash ukládaných dat. Při vytahování dat z obrázku je potom hash načten a porovnán s jeho vypočítanou hodnotou. 3 Implementace V předchozí kapitole byl popsán návrh programu metodou shora dolů. Výsledkem návrhu jsou třídy, které jsou nezávislé na jejich implementaci. V této kapitole bude stručně popsána implementace jednotlivých tříd. Třída ImageBlkIO implementuje obrázkový vstup/výstup pomocí knihovny Qt3. Tato knihovna zajistí načtení/uložení obrázku a přístup k jeho jednotlivým pixelům. Díky tomu program umí načíst obrázky různých formátů. Výsledný obrázek se ale ukládá vždy ve formátu PNG, který používá bezztrátovou kompresi. K samotnému schování dat se využívá LSB bit všech tří barevných složek každého pixelu. Třída HamDecorator implementuje kódování/dekódování dat pomocí Hammingova kódu. K tomu využívá modul hamming-0.3, který je dostupný na http://michael.dipperstein.com/hamming/index.html a jeho zdrojové kódy jsou součástí archivu. Při sestavení programu se sestaví i tento modul a přilinkuje se k ostatním modulům během linkování. Třída LenDecorator zajišťuje uložení údaje o délce přenášených dat spolu s daty. Její implementace je triviální a nepoužívá žádné další knihovny. Třída HashDecorator implementuje výpočet md5 hashe pro přenášená data. Algoritmus výpočtu md5 hashe není implementován přímo, ale pomocí gnulib modulu crypto/md5, který je dostupný na http://www.gnu.org/software/gnulib/. Zdrojové kódy modulu jsou opět součástí archivu a při sestavení programu je zajištěn jejich překlad a linkování se zbytkem programu. 4 Návod k použití Přeložený program se jmenuje kry2. Jméno programu se v programu nikde nevyskytuje není tedy problém si vytvořit smysluplnější symlink, nebo spustitelný soubor přejmenovat. Program funguje ve třech režimech, které se volí tím, kolik se programu zadá parametrů na příkazové řádce: žádný parametr Program vypíše nápovědu a skončí. 1 parametr Program očekává jméno souboru, ze kterého načte schovaná data a pošle je na standardní výstup. Pokud je při vytahování dat zjištěna opravitelná/neopravitelná chyba ECC, detekována neplatná 2

délka dat a/nebo odhalena neshoda hashe, jsou vypsána odpovídající chybové hlášky na standardní chybový výstup. Data (případně to, co z nich zbylo) jsou vypsána na standardní výstup i v těchto případech. 2 parametry Program očekává jméno vstupního souboru (obrázku v libovolném formátu) jako první parametr. Obrázek se načte a schovají se do něj data, která jsou načtena ze standardního vstupu. Potom je obrázek spolu s daty uložen do souboru, který je zadán jako druhý parametr. Výstupní obrázek je vždy ve formátu PNG bez ohledu na příponu výstupního souboru. 5 Výsledky Výsledkem je program, který dokáže do obrázku schovat libovolná data. V této kapitole bude vypočtena velikost dat, která se dají do obrázku schovat. Množství dat samozřejmě záleží na konkrétní velikosti obrázku v pixelech. Díky objektovému modelu, který je založený na dekorátorech, bude tento výpočet velmi snadný. Každá třída implementující rozhraní IBlkIO musí definovat metody, které tuto informaci poskytují. Metoda blksize vrací velikost bloku v bajtech a metoda blkcnt vrací maximální počet bloků, které lze do obrázku uložit. Je zřejmé, že postupným vrstvením dekorátorů bude celkové množství dat, která se dají do obrázku uložit, klesat. Nejprve tedy vypočtěme velikost dat v případě použití samotné třídy ImageBlkIO. Třída pracuje vždy s bloky o velikosti 3 bajty. Každé 3 bajty jsou uloženy do LSB 8 pixelů obrázku. Pomocí trojčlenky můžeme snadno zjistit, že do obrázku o rozměrech w krát h, je možné uložit w h 3 bajtů. Třída pracuje pouze s celými bloky je 8 tedy potřeba zaokrouhlovat vždy dolů. Dále je v řetězci zapojen HamDecorator, který opět pracuje s 3-bajtovými bloky, snižuje však počet dostupných bloků na polovinu. To je dáno tím, že Hammingovo kódování je redundantní a každý nibble je kódován jako samostatný bajt. Ve výsledku to znamená, že počet uložitelných dat se také sníží na polovinu. Zaokrouhluje se opět směrem dolů (viz. výše). Dekorátor LenDecorator využívá k uložení délky přenášených dat jeden blok, tedy 3 bajty. Tím je mimo jiné omezena délka přenášených dat na 2 24 bajtů bez ohledu na velikost obrázku. Pokud by tento limit někoho omezoval, není problém v další verzi délku rozšířit na dva bloky a tím rozbít binární kompatibilitu se současným formátem. Protože je LenDecorator v řetězci až za HamDecorator, délka je také kódována redundantě. Ve výsledku je tedy množství uložitelných dat sníženo o 6 bajtů. 3

Dekorátor HashDecorator potřebuje do obrázku uložit hash dlouhý 16 bajtů. K dispozici má však 3-bajtové bloky musí tedy velikost zarovnat na 6 bloků (18 bajtů). Opět platí, že je v řetězci až za HamDecorator a tuto velikost je potřeba násobit dvěma. Množství uložitelných dat je tímto dekorátorem sníženo o 36 bajtů. Dáme-li poznatky z analýzy jednotlivých dekorátorů dohromady, dostaneme vztah MAX = w h 3 8 1 1 18, (1) 2 kde w je šířka obrázku a h je výška obrázku v pixelech. Při vyčíslování výrazu je potřeba pracovat v algebře celých čísel a při operaci dělení vždy zaokrouhlovat směrem dolů. To je způsobeno zarovnáním na celé bloky v průběhu zpracování dat (viz. výše). 6 Závěr Jako školní projekt do předmětu KRY vznikl plnohodnotný a obecně využitelný program, který umí schovat text do obrázku a následně z něj tento text vytáhnout. Díky dobře zvládnuté analýze problému a efektivnímu využití již hotových komponent nebylo potřeba ztrácet čas implementací dříve implementovaného. Ušetřený čas jsem využil k implementaci jednoduchého avšak velmi přínosného rozšíření programu. Program dokáže kromě textu přenášet jakýkoliv binární obsah včetně spustitelných programů. Jako názorný příklad může sloužit obrázek 1, ve kterém je schovaný tar-gz archiv obsahující kompletní zdrojové kódy programu, jeho licenci a binární spustitelný soubor. Tento obrázek je součástí archivu. O jeho obsahu se můžete jednoduše přesvědčit spuštěním testovacího skriptu check.sh. Reference [1] E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design patterns: elements of reusable object-oriented software. Addison-Wesley, 1997. 4