Informační technologie
Když ráno odemknete mobil a přejedete palcem po obrazovce, máte v ruce víc výpočetního výkonu, než měla NASA při přistání Apolla 11. Dnes nám to přijde samozřejmé, ale za tou jednoduchostí se skrývá svět neviditelných pravidel, přesně definovaných procesů a milionů řádků kódu. Svět informačních technologií.
IT je všude. V bankomatech. V autech. Ve výtazích, nemocnicích, školách, chytrých hodinkách i semaforech. Zatímco my spíme, IT systémy se starají, aby fungoval internet, běžely servery, přicházely zprávy, odcházely platby. Vše je propojeno, ale málokdo si uvědomuje, jak moc.
Za každou „chytrou“ technologií však stojí něco mnohem důležitějšího: lidé, kteří jí dávají smysl. Programátoři, vývojáři, admini, kodéři. Ti, kteří IT nejen rozumí, ale i tvoří. A právě tady začíná náš příběh. Při luštění této cache se totiž i vy na okamžik stanete programátory.
Programování
Programování není jen technická dovednost, ale i způsob myšlení. Programátor vezme problém, rozebere ho na malé části, a pak vytvoří systém, který ho vyřeší. Pomocí přesně zapsaných příkazů říká stroji, co má dělat. A stroj poslouchá. Jeden špatně zapsaný znak a celé dílo padá. Jeden dobře promyšlený algoritmus a svět se stává rychlejším, chytřejším, efektivnějším. Programování je jako magie, jen místo hůlky máte klávesnici a místo kouzel mluvíš jazykem, kterému rozumí stroje. A těch jazyků je… opravdu hodně.
V dnešní době existují desítky programovacích jazyků. Každý má své silné stránky a je navržen pro určitý typ úloh. Neexistuje univerzální „nejlepší“ – jen ten nejvhodnější pro daný úkol.
Zde je několik z nich:
- Python
- Java a Kotlin
- C / C++ / C#
- JavaScript
- PHP
- Swift
- Go
- Rust
- Ruby
a další
Programování však není jen o znalosti konkrétního programovacího jazyka, ale také o znalosti datových struktur, algoritmů, návrhových vzorů, protokolů, matematiky a dalších stavebních kamenů. Všechny bohužel v tomto listingu neobsáhneme, to ani není možné. Při luštění této šifry však mnohé z nich budete potřebovat.
_____________________________________________________________________________________________________________________
CACHE
K vyluštění této kešky budete potřebovat počítač. Cílem je naprogramovat program, který bude sloužit jako dekodér obrazových dat.
Při správném dekódování vstupních dat dostanete šedotónový (černobílý) obrázek mapy vodní nádrže Strání, na kterém je zaznačeno místo, kde fyzicky hledat další indicie k nalezení finálky.
Jako vstup do dekodéru použijte soubor coded_input.txt ze stránky: https://geocaching.mimochodek.net
- Soubor obsahuje podivnou sekvenci čísel, které na první pohled nedávají smysl – některé jsou vyšší, některé nižší, a jejich rozložení vypadá náhodně. Nenechte se zmást. Úkolem je přijít na to, jak byla data transformována a dekódovat je zpět.
S jistotou můžeme říci:
- dekódované hodnoty odpovídají velikosti 1 byte
- v souboru se vyskytuje největší (nejsvětlejší) i nejmenší (nejtmavší) hodnota pixelu
- zakódování proběhlo v několika fázích. Jsou to:
- Posunutí původních hodnot o offset (konstantu)
- Zašifrování poloviny souboru pomocí operace XOR, klíčem je offset
- Reverzace prvků poloviny souboru
- Diference sousedních prvků, platí:
x[i] = y[i] - y[i-1] , kde i > 0
- bitová rotace (2 bity ->, 6 bitů <-)
( Transformované obrazové data můžete uložit i ve formátu .raw . Obrázky tohoto typu lze zobrazit například na této stránce: rawpixels.net )
Finále:
A - číslo na indexu 0
B - číslo na indexu 15
C - číslo na indexu 3
D - číslo na indexu 10
E - číslo na indexu 7
( Čísla vkládejte oddělené podtržítkem )
Doufám, že si honbu za touto keškou užijete. Cesta k finále není jednoduchá a keška tak nemusí být pro každého. Sláva nálezcům a čest těm, kteří se o to alespoň pokusí.
Tato keš je věnována všem nadšencům do předmětu KKO na VUT FIT a speciálně kolegovi Kocotomovi, za jeho ochotu a pomoc při studiích.