Ve druhé části článku o hexa editorech a dalších nástrojích vhodných pro práci s binárními soubory si popíšeme další vybrané hexa editory. Nejdříve se zmíníme o nástroji hexer určeného pro spuštění v konzoli a následně si popíšeme trojici hexa editorů s plnohodnotným grafickým uživatelským rozhraním: GHex, Bless a především pak velmi propracovaný editor nazvaný Okteta.

Obsah

1. Hexa editory a další nástroje pro práci s binárními soubory (2)

2. hexer

3. Vybrané příkazy editoru hexer

4. GHex – hexa editor určený pro prostředí GNOME

5. Export dat z editovaného binárního souboru do HTML

6. Bless Hex Editor

7. Další vlastnosti Bless Hex Editoru

8. Okteta – jeden z nejdokonalejších hexa editorů pro Linux

9. Vybrané nástroje dostupné v hexa editoru Okteta

10. Odkazy na Internetu

1. Hexa editory a další nástroje pro práci s binárními soubory (2)

Všechny hexa prohlížeče a hexa editory, které jsme si popsali v první části článku o nástrojích určených pro prohlížení a editaci binárních souborů, nabízely svým uživatelům „pouhé“ textové rozhraní (prohlížeč Midnight Commanderu, hexa editor dhex a další editor bvi), popř. se jednalo o filtr převádějící binární soubory na textovou podobu zpracovatelnou běžnými textovými editory (utilita xxd). V dnešní části článku o hexa editorech a dalších podobných nástrojích si nejdříve popíšeme utilitu pojmenovanou hexer, která je taktéž určená pro běh v konzoli (terminálu) a lze ji tedy například použít i na počítačích bez desktopového prostředí (servery, síťové prvky s Linuxem, vestavěná zařízení apod.). Další tři aplikace již svým uživatelům nabízí plnohodnotné grafické uživatelské rozhraní. Jedná se o nástroje nazvané GHex, Bless Hex Editor a především pak propracovaný nástroj Okteta.

21_dhex4

Obrázek 1: Konzolový hexa editor dhex popsaný minule.

2. hexer

Prvním nástrojem, se kterým se v dnešním článku seznámíme, je hexa editor nazvaný příznačně hexer. Tato aplikace je určena pro spuštění v terminálu (konzoli) a způsob jejího ovládání je velmi podobný minule popsanému nástroji bvi, protože jak hexer tak i bvi používají klávesové zkratky (příkazy) odvozené od zkratek využívaných v textovém editoru vi i v jeho následovnících (pozor ovšem na to, že existuje stejnojmenný hexa editor vybavený grafickým uživatelským rozhraním). Oba zmíněné hexa editory, tj. jak bvi, tak i hexer, taktéž zobrazují obsah editovaného binárního souboru podobným způsobem, což je patrné při pohledu na screenshoty umístěné pod tímto odstavcem.

01_hexer1

Obrázek 2: Manuálová stránka k nástroji hexer.

Mezi důležité vlastnosti editoru hexer patří podpora většího množství bufferů, mezi nimiž je možné se přepínat; zajímavé přitom je, že i některé na první pohled vyspělejší hexa editory tuto možnost postrádají. Dále je možné používat operaci typu undo se zvoleným počtem zapamatovaných minulých stavů. Další velmi užitečnou vlastností je podpora pro takzvané binární regulární výrazy, které jsou obdobou běžných regulárních výrazů, ovšem s tím rozšířením, že je do nich možné zapisovat i číselné kódy bajtů s využitím různých číselných základů (osmičková soustava, šestnáctková soustava), tyto kódy se v případě potřeby zapisují i ve formě „řetězců“ stylem „\xxff fe*“ atd.

02_hexer2

Obrázek 3: Takto vypadá uživatelské prostředí nástroje hexer.

3. Vybrané příkazy editoru hexer

V předchozí kapitole jsme si řekli, že aplikace hexer používá podobné příkazy jako známý textový editor vi či Vim. V následující tabulce jsou vybrané příkazy vypsány, takže je velmi snadné porovnat, do jaké míry je hexer z hlediska ovládání editoru vi podobný:

# Příkaz Význam
1 h j k l posun kurzoru po jednotlivých znacích či bajtech
2 w posun kurzoru na další slovo (platí pro pravý sloupec)
3 e posun kurzoru na konec slova (platí pro pravý sloupec)
4 b posun kurzoru na začátek slova (platí pro pravý sloupec)
5 n posun kurzoru na následující výskyt hledaného řetězce/hodnoty
6 N posun kurzoru na předchozí výskyt hledaného řetězce/hodnoty
7 r přepis bajtu (režim replace)
8 R přepis většího množství bajtů (režim replace)
9 i vkládání bajtů (režim insert)
10 v vizuální režim (výběr bloku)
11 x smazání bajtu
12 / vyhledávání (směrem dopředu)
13 ? vyhledávání (směrem dozadu)
14 . opakování posledního příkazu
15 y yank (odpovídá příkazu copy)
16 p paste

Před většinu příkazů je možné zapsat počet opakování, opět podobně jako v textovém editoru vi.

03_hexer3

Obrázek 4: Hexer podporuje i vizuální bloky, podobně jako textový editor Vim.

04_hexer4

Obrázek 5: Vyhledávání řetězce či sekvence bajtů s využitím příkazu / (search).

4. GHex – hexa editor určený pro prostředí GNOME

Druhým hexa editorem, s nímž se v dnešním článku seznámíme, je nástroj nazvaný GHex. Jedná se o aplikaci určenou primárně pro desktopové prostředí GNOME, z čehož také vyplývá relativně přehledné a současně i jednoduše použitelné grafické uživatelské rozhraní nabízené tímto nástrojem. Hlavní – a pro většinu doby i jediné – okno hexa editoru GHex je rozděleno do několika oblastí. Většinu plochy okna zabírá klasický pohled na editovaný binární soubor, tj. nalezneme zde sloupec s adresami, blok s hexa hodnotami a poslední blok, v němž se nachází znaky odpovídající jednotlivým bajtům popř. skupinám bajtů.

05_ghex01

Obrázek 6: Dialog se základními informacemi o aplikaci GHex.

Užitečné je, že formát zobrazení je možné různým způsobem měnit, například lze zvolit, zda se mají bajty sdružovat do dvoubajtových či čtyřbajtových slov. Spodní část okna obsahuje alternativní „pohled“ na editovaný binární soubor (resp. jeho aktivně prohlíženou či editovanou část), protože se zde zobrazují hodnoty jednoho, dvou, čtyř či osmi bajtů při použití různých formátů (bajt je zobrazen v desítkovém vyjádření bez znaménka i se znaménkem, čtyři bajty jsou zobrazeny i ve formátu odpovídajícího reálným číslům typu float, podobně je tomu pro osm bajtů a reálná čísla s dvojnásobnou přesností apod.).

06_ghex02

Obrázek 7: Základní pohled na editovaný binární soubor. V horní části můžeme vidět pohled používaný i dalšími hexa editory, v části spodní pak hodnoty aktivního (vybraného) bajtu a jeho nejbližšího okolí prezentované v různých formátech.

07_ghex03

Obrázek 8: Součástí aplikace GHex je i užitečná tabulka s ASCII.

08_ghex04

Obrázek 9: Další dostupný nástroj – konverze mezi různými číselnými soustavami.

09_ghex05

Obrázek 10: Alternativní pohled: sdružení bajtů do dvojic (16bitových slov).

10_ghex06

Obrázek 11: Další alternativní pohled: sdružení bajtů do čtveřic (32bitových slov).

13_ghex09

Obrázek 12: Při editaci se zvýrazňuje změněná část binárního souboru.

5. Export dat z editovaného binárního souboru do HTML

Hexa editor GHex taktéž obsahuje dnes již poměrně běžnou kalkulačku nabízející převody mezi jednotlivými číselnými soustavami (binární, osmičková, desítková, šestnáctková), u každé hodnoty se navíc zobrazuje i odpovídající znak z ASCII tabulky. Nechybí ani možnost vyhledávání v editovaném binárním souboru podle hodnot bajtů či podle zadaného řetězce. Dialog pro vyhledávání obsahuje i možnost výběru barvy (viz přiložené screenshoty umístěné pod tímto odstavcem) s následným vyhledáním její RGB hodnoty, tj. trojice bajtů reprezentujících jednotlivé barvové složky modelu RGB.

11_ghex07

Obrázek 13: Dialog pro prohledávání binárního souboru, včetně možnosti výběru barvy (a vyhledání RGB).

12_ghex08

Obrázek 14: Dialog pro prohledávání binárního souboru, včetně možnosti výběru barvy (a vyhledání RGB). Zde je patrné, že řetězec je možné zapsat ve formě hexadecimálních hodnot či skutečně přímo jako řetězec.

Poměrně zajímavou vlastností GHexu je podpora exportu původně binárního souboru na sekvenci HTML stránek, kde každá stránka obsahuje čitelný obraz jednoho paměťového bloku ve formátu známého z klasických hexa editorů popsaných minule. Kromě těchto stránek (jejichž počet je ovlivněn celkovou délkou editovaného binárního souboru a tím pádem i počtem bloků, na něž se soubor rozdělí) se vytvoří i indexová stránka s odkazy na HTML podobu jednotlivých bloků. Tato vlastnost hexa editoru GHex je ukázána na následujících dvou snímcích obrazovky.

14_ghex10

Obrázek 15: Vygenerovaná HTML stránka s odkazy na čitelnou podobu jednotlivých (původně binárních) bloků.

15_ghex11

Obrázek 16: Vygenerovaná HTML stránka s obsahem jednoho paměťového bloku. Použitý formát jako by z oka vypadl formátu používaném klasickými hexa editory.

6. Bless Hex Editor

Třetí hexa editor, který je, podobně jako výše popsaný GHex, taktéž primárně určen pro desktopové prostředí GNOME, se jmenuje Bless Hex Editor či zkráceně pouze Bless. Tato aplikace je poněkud zvláštní tím, že pro svůj běh vyžaduje běhové prostředí mono a knihovnu Gtk#, což může znamenat nutnost instalace poměrně velkého množství balíčků (samozřejmě za předpokladu, že v systému již není přítomna jiná aplikace, která tyto knihovny taktéž používá). Nicméně rychlost a systémové nároky Bless Hex Editoru nijak výrazně nevybočují z obvyklých nároků dalších podobně zaměřených aplikací s grafickým uživatelským rozhraním.

16_bless1

Obrázek 17: Dialog se základními informacemi o aplikaci Bless.

Bless Hex Editor nabízí v porovnání s výše popsaným editorem GHex větší množství funkcí, což je ostatně patrné i při pohledu na screenshoty. Poměrně užitečnou vlastností je několikastupňová operace typu undo, přičemž maximální počet zapamatovaných minulých stavů editovaného binárního souboru je možné nastavit s využitím příslušného dialogu, popř. je možné kontrolu na počet zapamatovaných změn zcela vypnout (a doufat tak, že je k dispozici dostatečná kapacita operační paměti, což ovšem nemusí být při složitějších operacích s rozsáhlými binárními soubory vždy zaručeno).

17_bless2

Obrázek 18: Základní pohled na editovaný binární soubor; oproti GHexu je zde navíc použito barevného zvýraznění.

18_bless3

Obrázek 19: Možnosti změny obsahu binárního souboru na základě zvolené bitové operace.

7. Další vlastnosti Bless Hex Editoru

Mezi užitečné vlastnosti hexa editoru Bless patří podpora pro konverzi dat a pro bitové operace prováděné nad daty, podpora pro použití většího množství záložek (tabů), možnost změnit layout obrazovky a mj. taktéž zvýraznění bloku dat, které odpovídají hledanému výrazu. Podobně jako tomu bylo u hexa editoru GHex, nabízí i Bless export dat do HTML či do textových souborů, což znamená, že může pracovat jako interaktivně ovládaná náhrada za minule popsaný filtr xxd či za další (v diskusi zmíněný) filtr hexdump. Nesmíme taktéž zapomenout na to, že Bless nabízí podporu pro tvorbu přídavných modulů (pluginů), což znamená, že se možná v budoucnu dočkáme mnoha zajímavých a užitečných doplňků.

19_bless4

Obrázek 20: Režim zobrazení, který se snaží napodobit klasické hexa editory.

20_bless5

Obrázek 21: Dialog s nastavením parametrů hexa editoru Bless. Povšimněte si možnosti konfigurace zásuvných modulů.

21_bless6

Obrázek 22: V možnostech exportu najdeme i výstup do HTML, podobně jako tomu bylo u hexa editoru GHex.

8. Okteta – jeden z nejdokonalejších hexa editorů pro Linux

Čtvrtým a současně i posledním hexa editorem, se kterým se v tomto článku seznámíme, je aplikace nazvaná Okteta. Tento hexa editor, který je primárně určený pro desktopové prostředí KDE, je velmi propracovaný, široce konfigurovatelný a nabízí svým uživatelům jak základní editační režim binárních souborů, tak i poměrně velké množství podpůrných nástrojů, z nichž některé budou zmíněny v navazující kapitole. Možnosti nastavení layoutu obrazovky jsou poměrně široké, jak je ostatně u KDE aplikací zvykem, ovšem ve výchozím nastavení je plocha okna editoru Okteta rozdělena na část s klasickým třísloupcovým hexa editorem a na část, v níž se zobrazují informace z podpůrných nástrojů (vyhledávání, konverze, statistika atd.).

22_okteta1

Obrázek 23: Okteta ihned po spuštění.

Podobně jako v mnoha dalších aplikacích určených pro desktopové prostředí KDE je možné i v hexa editoru Okteta otevřít a editovat soubory uložené na vzdáleném počítači, což může být v mnoha případech jednodušší, než se připojovat na vzdálený počítač a spouštět na něm nějaký konzolový hexa editor. V jednom okamžiku lze editovat větší množství binárních souborů a vybraný blok je možné přenášet přes schránku do dalších aplikací (jako binární data či jako text).

23_okteta2

Obrázek 24: Základní pohled na editovaný binární soubor.

24_okteta3

Obrázek 25: Zobrazení dalších informací o editovaném souboru.

9. Vybrané nástroje dostupné v hexa editoru Okteta

Nabídka nástrojů, které byly do editoru Okteta přidány, je neobvykle vysoká, ostatně se stačí podívat na následující (neúplný) seznam:

  1. Převody hodnot mezi číselnými soustavami (binární, osmičková, desítková, šestnáctková).
  2. Převody znaků na základě vybraných kódování (například Windows-1250 vs. Latin-2 atd. atd.).
  3. Podpora EBCDIC (kromě běžné ASCII).
  4. Zobrazení histogramu hodnot znaků (screenshot 26), čehož lze využít například při luštění jednoduchých šifer.
  5. Kalkulačka počítající kontrolní součty (Adler-32, CRC-32, součet modulo x).
  6. Kalkulačka počítající hashe podle MD-2, MD-4, MD-5, SHA-0, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 atd.
  7. Filtry (AND, OR, XOR, posuny, rotace).
  8. Režim vkládání bajtů (výchozí je samozřejmě přepis).

25_okteta4

Obrázek 26: Mapa četností znaků pro zdrojový kód předchozího článku.

26_okteta5

Obrázek 27: Nabídka konverze znaků může být v mnoha případech velmi užitečná a vítaná.

10. Odkazy na Internetu

  1. Bless Hex Editor

    http://home.gna.org/bless/

  2. hexer (man page)

    http://manpages.ubuntu.com/manpages/natty/man1/hexer.1.html

  3. GHex - a hex editor for GNOME

    https://wiki.gnome.org/Apps/Ghex

  4. GHex na GitHubu

    https://github.com/GNOME/ghex

  5. Ghex

    http://directory.fsf.org/wiki/Ghex

  6. Okteta

    https://utils.kde.org/projects/okteta/

  7. Okteta - Hex Editor

    https://www.kde.org/applications/utilities/okteta/

  8. Okteta (KDE UserBase Wiki)

    https://userbase.kde.org/Okteta

  9. Hex Editors for Lin/unix

    http://blog.sourcepole.com/2006/09/07/hex-editors/

  10. dhex (home page)

    http://freecode.com/projects/dhex

  11. Hex editor (Wikipedia)

    https://en.wikipedia.org/wiki/Hex_editor

  12. Comparison of hex editors (Wikipedia)

    https://en.wikipedia.org/wiki/Comparison_of_hex_editors

  13. bvi Home Page

    http://bvi.sourceforge.net/

  14. bvi (Wikipedia)

    https://en.wikipedia.org/wiki/Bvi

  15. xxd (man page)

    http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=xxd

  16. vim (man page)

    http://www.linux-tutorial.info/modules.php?name=ManPage&sec=1&manpage=vim