PLNY TEXT (1.347Mb)
Total Page:16
File Type:pdf, Size:1020Kb
ZADÁNÍ BAKALÁŘSKÉ PRÁCE I. OSOBNÍ A STUDIJNÍ ÚDAJE Příjmení: Sanchez Jméno: Luis Osobní číslo: 435714 Fakulta/ústav: Fakulta informačních technologií Zadávající katedra/ústav: Katedra softwarového inženýrství Studijní program: Informatika Studijní obor: Softwarové inženýrství II. ÚDAJE K BAKALÁŘSKÉ PRÁCI Název bakalářské práce: Multiplatformní HEX editor Název bakalářské práce anglicky: Multiplatform HEX Editor Pokyny pro vypracování: Mezi dostupnými editory binárních souborů (takzvanými HEX editory) je nedostatek těch, které jsou moderní, volně šiřitelné a multiplatformní. Proveďte analýzu současného stavu na poli takových editorů a na jejím základě vytvořte editor nový, který poskytne základní funkce, jež takové editory běžně nabízejí, a který bude zároveň splňovat výše zmíněné požadavky. Editor by měl běžet alespoň na platformách MS Windows, Linux a Mac OS. K implementaci použijte jazyk D a grafické rozhraní GTK+. Proveďte analýzu, návrh, implementaci a testování, jak je běžné ve vývojovém cyklu v softwarovém inženýrství. Seznam doporučené literatury: Dodá vedoucí práce. Jméno a pracoviště vedoucí(ho) bakalářské práce: Mgr. Martin Podloucký, katedra softwarového inženýrství FIT Jméno a pracoviště druhé(ho) vedoucí(ho) nebo konzultanta(ky) bakalářské práce: Datum zadání bakalářské práce: 05.12.2016 Termín odevzdání bakalářské práce: _____________ Platnost zadání bakalářské práce: _____________ ___________________________ ___________________________ ___________________________ Podpis vedoucí(ho) práce Podpis vedoucí(ho) ústavu/katedry Podpis děkana(ky) III. PŘEVZETÍ ZADÁNÍ Student bere na vědomí, že je povinen vypracovat bakalářskou práci samostatně, bez cizí pomoci, s výjimkou poskytnutých konzultací. Seznam použité literatury, jiných pramenů a jmen konzultantů je třeba uvést v bakalářské práci. Datum převzetí zadání Podpis studenta CVUT-CZ-ZBP-2015.1 © ČVUT v Praze, Design: ČVUT v Praze, VIC České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství) Bakalářská práce Multiplatformní HEX editor Luis Sanchez Vedoucí práce: Mgr. Martin Podloucký 15. května 2017 Prohlášení Prohlašuji, že jsem předloženou práci vypracoval(a) samostatně a že jsem uvedl(a) veškeré použité informační zdroje v souladu s Metodickým pokynem o etické pří- pravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů. V souladu s ust. § 46 odst. 6 tohoto zákona tímto uděluji nevýhradní oprávnění (licenci) k užití této mojí práce, a to včetně všech počítačových programů, jež jsou její součástí či pří- lohou, a veškeré jejich dokumentace (dále souhrnně jen Dílo\), a to všem osobám, " které si přejí Dílo užít. Tyto osoby jsou oprávněny Dílo užít jakýmkoli způsobem, který nesnižuje hodnotu Díla, a za jakýmkoli účelem (včetně užití k výdělečným úče- lům). Toto oprávnění je časově, teritoriálně i množstevně neomezené. Každá osoba, která využije výše uvedenou licenci, se však zavazuje udělit ke každému dílu, které vznikne (byť jen zčásti) na základě Díla, úpravou Díla, spojením Díla s jiným dílem, zařazením Díla do díla souborného či zpracováním Díla (včetně překladu), licenci alespoň ve výše uvedeném rozsahu a zároveň zpřístupnit zdrojový kód takového díla alespoň srovnatelným způsobem a ve srovnatelném rozsahu, jako je zpřístupněn zdro- jový kód Díla. V Praze dne 15. května 2017 ………………… České vysoké učení technické v Praze Fakulta informačních technologií © 2017 Luis Sanchez. Všechna práva vyhrazena. Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a meziná- rodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora. Odkaz na tuto práci Sanchez, Luis. Multiplatformní HEX editor. Bakalářská práce. Praha: České vysoké učení technické v Praze, Fakulta informačních technologií, 2017. Abstrakt Tato práce se zabývá vytvořením programu sloužícího k editaci souborů v binární podobě (tzv. HEX editoru). Tento program je určený pro platformy Windows, Linux, a Mac OS. V práci jsem provedl analýzu stávajících HEX editorů, podle níž jsem navrhl a vytvořil editor nový. Tento program obsahuje základní funkce běžné pro HEX editory a zároveň je navržen tak, aby bylo možné ho v budoucnu jednoduše rozšiřovat. Klíčová slova hex editor, multiplatformní, velké soubory, aplikace, jazyk D, GTK+, GtkD Abstract This thesis describes the development of a program used to edit files in a binary form. (HEX editor). This program is designed to run on Windows, Linux and Mac OS plat- forms. In the thesis I have done an analysis of contemporary HEX editors based on which I have designed and implemented a new one. The program supports basic functions common for HEX editors and is designed in a way that allows for adding additional features. vii Keywords hex editor, multiplatform, large files, application, D language, GTK+, GtkD viii Obsah Úvod 1 1 Analýza 3 1.1 HxD Hex Editor ............................ 3 1.2 wxHexEditor ............................. 4 1.3 010 Editor ............................... 4 1.4 HexEd.it ................................ 5 1.5 Shrnutí ................................. 6 2 Návrh 9 2.1 Specifikace požadavků ........................ 9 2.2 Případy užití .............................. 11 2.3 Pokrytí požadavků případy užití ................... 13 3 Vývojový proces 15 3.1 Nástroje a technologie ........................ 15 3.2 Postup ................................. 16 4 Implementace 17 4.1 Přehled systému ............................ 17 4.2 Zobrazení bytových bloků a textu . 18 4.3 Podpora velkých souborů ....................... 20 4.4 Zpět a Vpřed ............................. 21 4.5 Překladač dat ............................. 21 5 Testování 23 5.1 Automatické testování ........................ 23 5.2 Manuální testování .......................... 24 5.3 Testování na ostatních platformách . 24 ix 6 Výsledný program 25 6.1 Freehex ................................ 25 6.2 Možná rozšíření ............................ 26 Závěr 29 A Seznam použitých zkratek 31 B Obsah přiloženého CD 33 Bibliografie 35 x Seznam obrázků 1.1 Snímek obrazovky HxD Hex Editoru. .................. 3 1.2 Snímek obrazovky programu wxHexEditor. ............... 4 1.3 Snímek obrazovky programu 010 Editor. ................. 5 1.4 Snímek obrazovky programu HexEd.it .................. 6 4.1 Komponenty třídy HexEditor. ...................... 17 4.2 Komponenty třídy HexEditor. ...................... 18 4.3 Rozhraní FileProxy ............................ 20 4.4 Diagram tříd překladače dat ........................ 22 6.1 Snímek obrazovky programu Freehex. 26 xi Seznam tabulek 1.1 Porovnání funkcí HEX editorů ...................... 6 2.1 Pokrytí funkčních požadavků případy užití . 13 6.1 Porovnání funkcí HEX editorů ...................... 25 xiii Úvod Editory binárních souborů(takzvané HEX editory) jsou programy určené k úpravě souborů, které nelze lépe interpretovat než jako blok dat. Důvodů pro to může být hned několik: Formát souboru je neznámý, hlavička souboru je poškozená, nebo ne- existuje specializovaný software pro daný formát. V současné době existuje velké množství programů, které jsou schopny do jisté míry fungovat jako HEX editory. Pokud si ale uživatel přeje používat stejný editor na více platformách má již značně omezený výběr. Většina editorů je totiž omezena právě na jednu platformu. Také existují editory, které lze používat z prostředí webového prohlížeče a tím pádem na více platformách. Ty avšak k provozu potřebují připojení k internetu, které nemusí být vždy dostupné. V těchto případech získávají výhodu opět klasické pro- gramy. Cílem této bakalářské práce bude vytvoření nového HEX editoru, který poskytne alespoň základní funkce, které běžně tyto editory nabízejí. Zároveň tento editor bude určený pro tři hlavní platformy: MS Windows, Linux, Mac OS. 1 Kapitola 1 Analýza V této kapitole je provedena analýza některých současných HEX editorů. Při výběru programů k byly preferovány moderní HEX editory s grafickým rozhraním. Cílem tohoto procesu je nalezení základních funkcí těchto programů, sestavení požadavků na nový HEX editor a běžných případů užití. 1.1 HxD Hex Editor [1] HxD Hex Editor je volně šiřitelný editor určený pro platformu Windows. V textovém zobrazení lze přepínat kódováni mezi několika osmibitovými kódováními. Chybí zde podpora textu složeného ze znaků Unicode. Editor neobsahuje překladač dat 1. Ze základních funkcí editor podporuje klasické funkce známé textových editorů: Kopírovat, Vložit, Najít & Nahradit případně Přejít na adresu. Dále dokáže editovat velké soubory či upravovat úseky paměti nebo disku. Obrázek 1.1: Snímek obrazovky HxD Hex Editoru. 1Zobrazení dat ve formě různých základních datových typů 3 1. Analýza 1.2 wxHexEditor [2] wxHexEditor je open-source HEX editor s podporou velkých souborů. V textovém zobrazení umožňuje volbu mezi různými kódováními, od ASCII až po varianty UTF. Editace textu je ale možná jen v ASCII kódování. Součástí editoru je překladač dat s podporou základních datových typů a přepínání endianity. Kromě těchto funkcí navíc nabízí možnost označit úseky dat pomocí tagů, zobra- zení dat jako instrukce assembleru, načtení dat z paměti RAM určitého procesu atd. Další výhodou tohoto editoru je dostupnost překladů do mnoha jazyků. wxHexEditor podporuje platformy MS Windows,