Hacky a hackeři IV. – jak hackují v NASA

Na světě existuje jen málo organizací, ve kterých nalezneme tak vysoký počet hackerů. Není vůbec žádných pochyb, že jednou z nich je NASA.

Toto léto si připomínáme velmi oblíbený seriál článků, který na Živě.cz vyšel před více než sedmi lety. Týká se hacků, hackerů, crackerů a podobných záležitostí, které jsou ale stále aktuální. V historických souvislostech si připomeneme, kdo byli původní hackeři a jakými kousky se proslavili.


Pracovníci NASA se denodenně setkávají s velmi nevšedními zadáními, většinou ve velmi nevšedních podmínkách. A nevšední problémy si vyžadují nevšední řešení. Dalo by se tedy říci, že lidé z NASA mají hacking takřka v popisu práce.

Hack na orbitu měsíce

Kdysi jsem například na Slashdotu slyšel jednoho bývalého zaměstnance NASA vyprávět o tom, jak debugovali software na nějaké vesmírné sondě. Bohužel si již nevzpomínám na její název. Kuriózní na tom však bylo, že let signálu z řídícího střediska a zpět trval přes dvě minuty. Až tedy budete příště přemýšlet, „proč vám ten program v tom strašně složitém asembleru ksakru nefunguje,“ představte si, že ve skutečnosti je váš počítač někde o pár milionů kilometrů dál (to již není podstatné, stejně tak by mohl být na druhém konci sluneční soustavy) a od okamžiku, kdy stisknete nějakou klávesu, po její zobrazení na pomyslném vzdáleném počítači, to trvá pár minut. Ještě se vám zdá asembler na lokálním PC těžký? Umíte si představit, co to znamená „programovat“, když máte tlačítko „reset“ někde na druhém konci sluneční soustavy?

Opravdu skvělým hackem byl od začátku do konce proces záchrany ochromené lodi Apollo 13. Oživování systémů lodi za vypnuté telemetrie, což do té doby nikdo nikdy nezkoušel, které bylo nutné proto, aby se ušetřilo několik ampér či seřizování navigačních systémů podle polohy Slunce v okénku lodi nebyly zdaleka jedinými „hacky z nutnosti“. Mezi ty patří i hack s narychlo vyrobeným filtrem pro čištění atmosféry měsíčního modulu od oxidu uhličitého.

„Smylie klopýtal uličkou a hledal Deka Slaytona, Chrise Krafta a Gena Kranze. Věděl, že s každou ubíhající minutou jsou astronauti v daleké lodi stále blíž smrti zadušením vlastním oxidem uhličitým. Smylie si uvědomoval, že tahle krabička, kterou právě vynalezl, jim pravděpodobně zachrání život,“ píše ve své knize Apollo 13 – Ztracený Měsíc Jim Lovell.

V 86 hodin 24 minut letového času začala posádka konečně spásný přístroj zhotovovat: „Swigert vklouzl zpět do Odyssey a přinesl odsud nůžky, dvě velké patrony hydroxidu lithného pro velitelský modul a ruličku šedé lepicí pásky, která měla původně sloužit pro přilepení vaků s odpadky ke stěně kosmické lodi v posledních dnech letu. Haise vydoloval svůj manuál postupů v LEMu, vrhl se na tvrdé kartónové stránky, které obsahovaly instrukce pro start z Měsíce a nyní byly naprosto k ničemu, a vytáhl je z kroužkové vazby. Lowell otevřel skladovací skříňku v zadní části LEMu a vyjmul z ní termální spodní prádlo zabalené do igelitu, jež měli s Haisem nosit pod skafandry při procházce po Měsíci. Lowell roztrhl plastikový obal, odhodil teď nepoužitelné oblečení z kombinovaného materiálu zpátky do přihrádky a vzal si naopak drahocenný plastikový pytel.“ Z takových „surovin“ se po dlouhém a pečlivém předčítání postupu práce z Houstonu, podařilo vyrobit plně funkční filtry použitelné v lunárním modulu. Když běžela na Slashdotu diskuze o deseti největších hacích všech dob, mnoho čtenářů navrhovalo právě tento filtr oxidu uhličitého.

Když není místo

Abychom se ale vrátili k počítačům, jeden zajímavý hack popisuje 19. dubna 1991 na USENETu Joseph M. Newcomer:

Když jsem na CMU (Univerzita Carnegie Mellon v USA) navštěvoval přednášky o architektuře počítačů, studovali jsme více strojů. Vzpomínám si, že mezi ně patřil i Apollo Guidance Computer (počítač pro navádění Apolla).

Tehdy byl prozkoumán okruh problémů, které s tím souvisí, a navržen stroj, který by je uměl řešit. Slova paměti tehdy často mívaly jako počet bitů prvočísla (u DoD embedded strojů bývala slova dlouhá třeba 19 či 29 bitů, protože ceny disků a dalších pamětí byly mnoho dolarů za jediný bit a speciálně v případě DoD byly ještě několikrát vyšší).

Byla tedy specifikována minimální paměťová konfigurace, která k provedení úlohy měla stačit. Počítač měl, jestli se dobře pamatuji, osm operačních kódů (opcode). Jak tomu tak u těchto projektů bývá, procesor dodala jedna firma, software jiná a paměť ještě nějaká třetí. Paměť byla záludná. Byla to většinou ROM (plated wire ROM, braided core ROM, transformer ROM, a další ještě bizardnější technologie), nějaká RAM, zabírala hodně místa, byla relativně těžká a spotřebovávala docela dost energie. Ti lidé, kteří na projektu pracovali, se ale starali o gramy na palubě – protože kdyby se nestarali, nikdy by se to neodlepilo od země.

Vše bylo skvělé, až na to, že se jim nedařilo nacpat program do daného počtu volných kilobyte. „Kdybychom tak měli více instrukčních kódů, mohli bychom eliminovat některé roztahané přebytečné výpočty a nahradit je jedinou instrukcí,“ říkali lidé přes software. „Dobře, přestavíme procesor,“ říkali lidé, kteří měli na starosti procesory. „Nemůžeme vám dát více bitů,“ odpověděli však lidé, kteří měli na starost paměť. Problém byl v tom, že by bylo jen stěží možno takto ji předělat. Pokud by měli přidat jeden bit na slovo spolu s dalšími potřebnými obvody (vzpomeňte si na SSI), nevešlo by se to do obalu, se kterým se počítalo, potřebovalo by to víc elektrického proudu a bylo by to těžší.

Pokud nemohli mít mocnější instrukce, potřebovali více slov paměti. V situaci, kdy nemohli získat jeden bit navíc, bylo jasné, že nemohou mít nějakých dalších 8K slov.

Přišli s geniálním, i když poněkud neohrabaným řešením. Součástí kódu operací se stal přetékající bit. K volání extra instrukcí bylo pak nutné vložit na zásobník velkou hodnotu, která by při přidání k instrukci v paměti způsobila přetečení. Protože byly tyto instrukce v ROM, nijak je to nezměnilo, ale ten jeden bit navíc umožňoval adresovat dalších 8 operací.

Předpokládám, že tyto dodané instrukce byly dostatečně výkonné na to, aby dokázaly vyvážit počet instrukcí nutných k jejich vyvolání. Ten přetisk článku, který jsme používali jsem již dávno ztratil. Náš tehdejší učitel, Dave Parnas, který měl tento kurz na starosti, si s tímto strojem hodně užil...

Diskuze (34) Další článek: Poslední šance: vyhrajte Acer Aspire One 751h za blogování

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,