Hacker
-=-=-=-=
Thus spake the master programmer:
"When you have learned to snatch the error code from the trap frame, it
will be time for you to leave."
-- Geoffrey James, "The Tao of Programming"
K napsání tohoto článku me přiměla následující reakce
nejmenovaného pana X:
- Pokud potřebujete levně WWW a gateway, je asi nejlepší Linux
- Linux ..... to je ten hackerský operační systém?
- ano.
- Tak to ne! Nic od kriminálníků instalovat nebudeme. My
potřebujeme seriózní program.
Toto mínění o hackerech je poměrně rozšířené. Těžko takovému
človeku pak vysvětlíte, že Linux je jeden z nejspolehlivějších
operačních systémů vůbec. Největší zásluhu na této pověsti
nemají samotní hackeři, ale noviny. Je asi mnohem lukrativnější
vydat článek "Neznámý hacker napadl banku", než článek "hacker
naprogramoval gcse pro egcs".
Proto bych se rád ohlédl po tom, kdo vlastně hackeři jsou.
Samozřejmě, že každý si pod tímto slovem představuje něco
jiného a tak je to spíše téma na větší sociologickou studii.
Přesto ale existuje několik oficiálních zdrojů, o které se lze
opřít. Asi nejznámější je Jargon - The New Hacker's Dictionary,
které vydává MIT press a v online verzi jej najdete na
http://www.ccil.org/jargon. Tento dokument obsahuje nejenom
výkladový slovník všech základních výrazů hackerského slangu (který
je nezvykle bohatý (kde jinde by měl smysl dialog:
"There is a bug in this ant farm!"
"What do you mean? I don't see any ants in it."
"That's the bug."
)), ale obsahuje i rozsáhlý úvod do podstaty hackerství
a v sekci Bibliography najdete odkazy na několik dalších děl
zabývajících se tématem. Například odkaz na nádherné dílko The Tao
of programming, které jsem vpodstatě celé odcitoval v mé rubrice.
Začneme trochou historie. Hackeři se objevili hned ve 40. a 50.
letech zároveň s prvními počítači. Byly učiněny první velké objevy
na poli informatiky jako:
as soon as we started programming, we found to our surprise that
it wasn't as easy to get programs right as we had thought. Debugging
had to be discovered. I can remember the exact instant when
I realized that a large part of my life from then on was going to be
spent in finding mistakes in my own programs.
-- Maurice Wilkes, designer of EDSAC, on programming, 1949
To několik lidí přimělo trávit více času v práci než ostatní
a po nocích studovat taje nového oboru. Jejich práce se stala jejich
největším a většinou jediným koníčkem a ten začal ovlivňovat jejich
způsob myšlení. A právě oni se staly prvními hackery.
Sály s počítači samozřejmě nebyly temnými kriminálními doupaty,
a vědci v bílých pláštích kolem měli daleko k sfetovaným teenagerům.
okrádající všechny kolem. Hacker samozřejmě většinou nefetuje,
protože jeho činnost vyžaduje většinou plné vědomí. A proč používat
chemické drogy, když se může oddávat závislosti na počítači. Proto
zde novinová představa neobstojí.
Průměrný hacker té doby tedy zákonitě musel být "seriozní"
vědecký pracovník. (jinak by se k mašině prostě nedostal)
Od ostatních se vyznačoval hlavně tím, že znal stroj do posledního
šroubku (i když někdy mu nějaký ten magický přepínač utekl :)
a bez problémů byl schopen z výpisu paměti po pádu systému najít
chybu a opravit ji v mikrokódu. Označení hacker by tedy nemělo
být pomluvou ale jakýmsi titulem. Člověk by se neměl prohlásit
za hackera sám, ale počat, až jej za něj začnou považovat ostaní.
Zároveň to není věc, za kterou by se měl stydět.
Pod rukama nejznámějších hackerů (jako jsou Ken Thompson,
Richard M. Stallman, nebo Linus Torwalds) vzniklo samozřejmě mnoho
užitečných věcí - UNIX, C, GNU a mnoho free softwarových programů.
Díky síti, která pomalu začala propojovat počítače i hackeři spolu
začali více mluvit a vznikla tak vlastně celá nová klutura se svými
ideály, vtipy i jazykem. Tyto odlišnosti pravděpodobne způsobili
nepochopení ostatními. Průměrný hacker na otázku: Ty ale nejses
lamer, že ne? odpoví ano podle logického schématu:
if (!lamer) ano else ne
ale normálního člověka odpověď přinejmenším zmate. Dialogy jako:
Hi! How are things going?
(just fine, thank you...)
Great! Say, could I bother you for a question?
(you just asked one...)
Well, how about one more?
(one more than the first one?)
Yes.
(you already asked that...)
[at this point, Alphonso gets smart... ]
May I ask two questions, sir?
(no.)
May I ask ONE then?
(nope...)
Then may I ask, sir, how I may ask you a question?
(yes, you may.)
Sir, how may I ask you a question?
(you must ask for retroactive question asking
privileges for the number of questions you have
asked, then ask for that number plus two, one for
the current question, and one for the next one)
Sir, may I ask nine questions?
(go right ahead...)
Normální lidi totálně odradí. Jedno takové nedorozumění.
Další špatný vliv na pověst hackerů mělo rozšíření osobních
počítačů a vznik pirátských BBS a warezáckých sajtů. Zde se opravdu
najde velké množství lidí, kteří se zabývají výhradně prolamováním
různých systémů. Ti ale alespoň podle New Hackers Dictionary nejsou
opravdovými hackery, protože jednak se většinou vůbec nesetkali
s opravdovým operačním systémem a také člověk, který nezná lepší
využití pro své vědomosti prostě hackerem nemůže být. Přesto, že se
často samozvaně za hackery prohlašují, měli by se důsledně označovat
termínem cracker. Kdyby noviny psaly "neznámý cracker napadl banku",
všechno by bylo vpořádku. Jedná se opravdu o odlišnou skupinu lidí.
Samotné crackování je poměrně jednoduchou záležitostí.
Na internetu existuje několik dobře známých míst (například
www.rootshell.com), kde najdete podrobný návod a pokud si umíte
najít tu správnou díru a přeložit program, máte vyhráno. Asi
nejklasičtějším příkladem takových chyb je buffer owerflow, kde si
program vyhradí na data na zásobníku nějaké místo, ale dostane víc.
Data přetečou kam nemají, změní co nemají a program udělá to,
co cracker chce. Přečtete si tedy, jakému programu máte zadat
jaký dlouhý vstup a už na Vás mrká vězení (#) rootovského shellu
(a posléze možná i vězení opravdové). Nevyžaduje to tak hlubokou
znalost problematiky, hako by hacker měl mít. Ani samotné servery
s těmito informacemi nejsou ilegální, protože jsou nenahraditelným
pomocníkem správců sítí, kteří tam najdou i informace jak dané díry
zalátat. Většina z nich Vás zavazuje k tomu, že informace na nich
obsažené použijete pouze pro výukové účely. Pokud neznáte metody,
jak crackování funguje, asi těžko mu můžete účině čelit.
Ukázková security hole
Je pravda, že poněkud složitější je po sobě zamést stopy, aby
rozzuřený správce sítě crackera nenašel. Také vytváření vlastních
exploitů, stejně jako prolamování ochran u her vyžaduje znalost
assembleru. Přesto to ale není nijak složité. Sám se považuju
u assembleru na Intelu spíše za nováčka (nikdy jsem se ho nijak
výrazně neučil a nenapsal v něm program delší než 20KB), ale umím
to. Na hledání životů u her také existují velmi účinné pomůcky -
například gametools či gamewizards. S nimi pouze program přerušíte
pokaždé, kdy ve hře ztratíte, nebo dostanete život a oni porovnají
změny v paměti, najdou správné místo a potom pomocí hardwarových
breakpointů najdou instrukci, která paměť mění. Tuto instrukci
vyhodit z programu je už většinou hračkou - a crack je na světě.
Je pravda, že pokud je program napsaný tak, aby se crackoval těžko,
je situace zajímavější. Podle vlastní zkušenosti ale můžu ríct,
že tomu většinou tak není. K mému údivu vždy objevím hesla v textové
podobě v některém souboru apod.
O technikách crackování by to asi už stačilo stačilo, aby někdo
nedošel k závěru, že se zde snažím vychovat nové crackery. Tímto
považuju téma crackování v této rubrice na vyčerpané.
Opravdový hacker by měl nejenom znát metody crackování popsané
výše (rozumný hacker ale tuto zkušenost použije spíš k tomu,
aby jeho programy byly bezpečné, nebo v situaci, že roztržitý
kořen zapomene heslo). Každy hacker by měl dobře rozumět UNIXu,
sítím, programovaní v C, assembleru, hardwaru a mnoho dalším věcem.
Nejdůležitější ale je, aby rád a s chutí dělal dobré programy,
bez zbytečných čekací smyčky, megabajty nepoužitých dat a jsou pokud
možno zdarma.
Prostě a jednodušše musí udržovat jistou hackerskou etiku,
kterou lze pěkně vyčíst z příběhu opravdového programátora Mela.
V poslední době dochází k promíchávání hackerů ze světa UNIXu
s lidmi odkojenými warezem a crackováním a proto záleží na každém,
do které skupiny se hodlá zařadit. Jestli bude trávit čas
hledáním hesla u her, nebo hledáním chyby v kernelu. Myslím,
že hodně crackerů to děla jen proto, že neví, co dělat lepšího
a jsou znechuceni komerčním sofwarem. A proto je free sofware pro ně
možností...
Pokud opravdu chcete vědět, zda jste se stali hackerem, můžete
se pokusit udělat hacker test.
Definice hackera z New Hacker's Dictionarry
Happy hacking
- HH -
výheň