Как да стана хакер  

Posted by az100yan

Защо е нужен този документ?

Като редактор на "Жаргон-файла" (Jargon File), често получавам по електронната си поща въпроси от ентусиазирани мрежови новаци, питащи: "Как да стана хакер-магьосник?". Достатъчно странно е, че не могат да се намерят никакви FAQ или web-документи в мрежата, които да дават отговор на този въпрос. Така, че ето ви моят.

Ако четете копие на този документ off-line, текущата версия на оригинала (на английски език) се намира на адрес http://www.ccil.org/~esr/faqs/hacker-howto.html.

Що е то хакер?

"Жаргон-файл"-а съдържа куп определения на термина "хакер", повечето от които са свързани с техническата компетентност и удоволствието, получавани от решаването на проблеми и преодоляването на прегради. Но ако Вие искате да знаете как да станете хакери, то истински съществени се оказват два аспекта.

Съществува общество, вид култура или споделяна философия, която се състои от опитни програмисти и мрежови чародеи, които водят своята история от времето на първите микрокомпютри с времеделене и от първите експерименти с мрежата ARPAnet. Членовете на това общество слагат началото на термина "хакер". Хакерите направиха Internet. Хакерите направиха операционната система UNIX такава, каквато е сега днес. Хакерите водят Usenet. Благодарение на хакерите съществува World Wide Web. И ако Вие се явявате част от тази култура, ако сте дали своя дял в нея и ако другите членове на това общество знаят кой сте Вие и Ви наричат хакер, то Вие сте хакер.

Хакерският мироглед не се ограничава с културата на програмиста. Има хора приемащи хакерския подход и към други неща като електроника или музика. В действителност можете да ги срещнете и сред висшите кръгове на науката и изкуствата. Софтуерните хакери припознават такива близки по дух хора и също ги наричат хакери, някои дори твърдят, че хакерската природа не зависи от сферата, в която работи хакера. В останалата част на този документ обаче ще се съсредоточим на навиците и похватите на софтуерните хакери, а така също на традицията на културата, породила термина "хакер".

Има и друга група хора, шумно наричащи се хакери, каквито не са. Тези хора (предимно младежи от мъжки пол) пробиват компютърни или телекомуникационни системи. Истинските хакери наричат тези хора "кракери" и не желаят да имат нищо общо с тях. Повечето истинските хакери считат кракерите за лениви, безотговорни и не особено умни. Това, че човек е способен да разчупи система за сигурност не го прави хакер, както и умението Ви да електрифицирате автомобила си не ви прави автомобилен инженер. За нещастие много заблудени журналисти и писатели използват думата "хакер" за определяне на кракери и това действа безкрайно раздразнително на истинските хакери.

Основното различие е в следното: хакерите правят нещата, а кракерите ги развалят.

Ако искате да станете хакер, продължавайте да четете. А ако искате да ставате кракер отивайте да четете news-групата alt.2600 и се пригответе да прекарате от пет до десет години в затвора, когато откриете, че не сте толкова ловки, колкото сте си мислили. Това е всичко, което мога да кажа за кракерите.

Хакерският подход

Хакерите решават проблеми и са съзидатели, те вярват в свободата и доброволната взаимопомощ. За да Ви възприемат като хакер Вие трябва да се държите така, че това да е Вашата собствена позиция. А за да бъде наистина Ваша позиция Вие трябва да вярвате в нея.

Но ако мислите да култивирате у себе си хакерско поведение само за да получите признание в хакерското общество, то Вие пропускате най-важното. Да станете човек, който вярва в подобни неща - това е важно за самия вас, защото ще Ви научи да поддържате стремежа си. Както и, в което и да е изкуство най-ефективния способ да станете майстор е да подражавате на признатите майстори не само интелектуално, но и емоционално.

Така, че ако искате да станете хакери, повтаряйте си следните принципи докато не повярвате в тях:

1. Светът е пълен с пленителни проблеми, които очакват решение.

Да бъдеш хакер е огромно удоволствие, но удоволствие, което изисква огромни усилия. За такива усилия е нужна мотивация. Атлетите-шампиони черпят мотивация от специфичното физическо удоволствие, получавано от довеждането на собственото тяло до съвършенство или от преодоляване на собствените физически предели. Подобно на това, за да бъдете хакери Вие трябва да изпитвате удоволствие от решаването на проблеми, от отказването от своите навици, от тренировките на своя интелект.

Ако не сте такъв тип човек, трябва да станете за да направите от себе си хакер. В противен случай ще забележите, че Вашата хакерска енергия е изчерпана от такива дразнители като секса, парите и успеха в обществото.

(Вие трябва също да развиете у себе си вяра в собствените си способности за обучение. Вяра в това, че дори да не знаете всичко необходимо за решение на проблема, но сте се справили с частичка от него и сте го научили, то вече знаете достатъчно за да решите следващата частичка и така нататък докато всичко не бъде направено.)

2. Никой и никога не трябва да решава един проблем два пъти.

Творческият мозък е ценен и ограничен ресурс. Не трябва да го пилеем за откриване на колелото, когато наоколо има толкова много чудесни нови проблеми.

За да се държите като хакер Вие сте длъжни да вярвате, че времето за размисъл на другите хакери е скъпоценно и се явява морален дълг за Вас да споделите информацията, с която разполагате. Решете някой проблем и след това раздавайте решението си, така че другите хакери да могат да решават нови проблеми вместо непрекъснато да се връщат към старите.

(От Вас не се очаква да вярвате, че сте длъжни да раздавате всички плодове на творчеството си, въпреки, че хакерите, които праят това са сред най-уважаваните от другите хакери. На ценностната система на хакерите няма да противоречи ако Вие продавате плодовете на своето творчество за да си осигурявате храна, подслон и компютри. Напълно приемливо е и ако използвате хакерските си навици за да издържате семейството си и даже за забогатеете от това, стига покрай това да не забравите, че все пак сте хакер.)

3. Скуката и рутината са злини.

Хакерите (и въобще хората на изкуството) никога не трябва да се занимават със скучни неща или да потънат в рутината на монотонната работа, защото това означава, че не могат да правят това, което могат да правят само те - да решават нови проблеми. Подобно разточителство вреди на всички. Затова скуката и рутината са не просто неприятни - те са зло.

За да се държите като хакер Вие трябва да вярвате в това така, че да желаете автоматизацията на всичко скучно и не само за себе си, а и за всички останали (особено за другите хакери).

(Има едно явно изключение. Понякога хакерите се занимават с неща, които могат да изглеждат монотонни или скучни за странични наблюдатели в качеството си на упражнения за мозъка или за изработване на навици. Или пък за придобиване на особен род опит, който е невъзможно да се получи по друг начин. Но всичко това трябва да се прави само по собствен избор - никой от умеещ да мисли не трябва да бъде принуждаван към скучна работа.)


4. Свободата е благо.

Хакерите по природа са анти-авторитарни. Всеки, който може да Ви заповядва, може да Ви възпре от решението на проблем, който считате за очарователен. И учтивия начин на размишление на авторитарните мозъци ще намери какви ли не потресаващо-идиотски причини за да го направи. Затова трябва да се борите с авторитарния подход винаги, когато го срещнете, за да не задушава той Вас или други хакери.

(Това не е същото като да се борите с всички власти. Децата се нуждаят от ръководител, престъпността е необходимо да се възпира. Хакера може да се съгласи на някакъв вид ръководство, за да получи нещо, което му е нужно и когато има възможност да го получи без да търпи много време заповеди. Това е органичена разумна сделка, нещо като личен компромис.)

Авторитаризмът процъфтява в условията на цензура и секретност. Сред хора, които не вярват в доброволното сътрудничество и споделянето на информацията - на тях им се нрави само такова "сътрудничество", което управляват те. За да бъдете хакер сте длъжен да тренирате у себе си неприязън към цензурата, секретността или използването на сила или измама за принуждаване на хора. Действията Ви трябва да изхождат от тази увереност.

5. Становището не заменя компетентността.

За да бъдете хакер, сте длъжен да развивате у себе си някои от изброените принципи. Но да следвате само принципа ще Ви направи толкова хакер, колкото и спортист-рекордьор или рок-звезда. За да станете хакер трябва интелект, практика, самоотверженост и тежък труд.

Затова Вие трябва да се научите с недоверие да се отнасяте към становищата и с уважение към компетентности от всякакъв вид. Хакерът не позволява позьори да да му губят времето, но те се прекланят пред компетентността - най-вече хакерската компетентност, но компетентността, в каквото и да е заслужава внимание.

Ако боготворите компетентността Вие получавате насладата, развивайки я в себе си. Тежкият труд и преданността към работата ще станат за Вас завлядяваща игра, а не рутина. А това е жизнено необходимо за да станете хакер.

Основни хакерски умения

Хакерският мироглед е от значение, но майсторството е многократно по-важно. Позицията не заменя компетентността - съществуват определен набор основни навици, които е необходимо да увладеете преди другите хакери изобщо да помислят да наричат хакер и Вас.

Този базов набор с времето бавно се променя - така, както и технологиите пораждат нови умения и правят старите ненужни. Например доскоро се изискваше програмиране на машинен език и съвсем доскоро не се очакваха познания по HTML. В днешният набор определено се включват следните компоненти:

1. Научете се да програмирате.

Това разбира се е основно хакерско умение. Ако не знаете никакъв компютърен език бих Ви препоръчал да започнете с езика Python. Той е разработен чудесно, добре е документиран и е доброжелателен за новаци. Не се заблуждавайте, че тъй като е добър за начинаещи той е някаква играчка. Това е много мощен и гъвкав език, много подходящ за болшинството

Знайте, че няма да постигнете майсторско хакерско ниво (или даже дори нивото на добър програмист), ако знаете само един език. Необходимо е да се научите да мислите по проблемите на програмирането въобще, независимо от конкретния език. За да бъдете истински хакери трябва да достигнете ниво, което Ви позволява да научите който и да е нов език за няколко дни, консултирайки се с ръководството му. Това означава да научите няколко много различни езика.

Ако се занимавате сериозно с програмиране то ще ви се наложи да научите C - основния език на операционната система UNIX (въпреки, че това едва ли е езика, с който трябва да започнете). Други езици от първостепенна важност за хакерите са Perl и LISP. Езикът Perl има смисъл да се научи заради практически съображения - той щироко се използва за динамични web-страници и системно администриране, така че и никога да не ви се наложи да пишете на Perl, ще е добре да можете да го четете. LISP си струва да се научи заради дълбоките познания, които ще имате, когато го усвоите. Тези познания ще Ви направят прекрасни програмисти до края на живота Ви, даже и никога да не го използвате.

Най-добре от всичко би било да научите всичките четири езика (Python, C, Perl, и LISP). Освен, че са най-важните хакерски езици, те демонстрират много различни подходи за програмиране и всеки от тях ще Ви научи на нещо ценно.

Не мога да Ви дам подробни инструкции за това как да се научите да програмирате - това е сложно изкуство. Но мога да Ви кажа, че книги и курсове на това няма да Ви научат (много, а възможно и повечето от добрите хакери са самоуци). Трябва да се учите като (а) четете програми и (б) пишете програми.

Да се научите да програмирате - това е като да се научите да пишете добре на родния си език. Най-добрият способ за това е да попрочетете какво са написали майсторите, след това да опитате сам, да прочетете още малко, да напишете още нещо... И да повтаряте този процес докато програмите Ви не се развият в нещо мощно и семпло.

Да намерите добри сорсове за четене преди беше сложни, много малко програми бяха достъпни като код и да се изучават от младите хакери. Сега ситуацията е кардинално променена: Програмите с изходните си кодове, програмисткия инструментариум и операционните системи (всичко това е създадено от хакери) сега са широко достъпни. Което ни води към следващия раздел...

2. Намерете си някой от вариантите на UNIX в изходен код, научете се да го ползвате и да работите с него.

Предполагам, че имате персонален компютър или имате достъп до такъв (в наши дни децата получават всичко толкова лесно :-)). Единствената най-важна крачка, която който и да е новак може да предприеме е да се сдобие с копие на Linux или някоя от версиите на BSD-Unix, да я инсталира на собствената си машина и да я стартира.

Да, съществуват и други операционни системи освен Unix. Но те се разпространяват в двоичен вид - не можете да разчетете кода или да го модифицирате. Да се учите на хакерство на машина под DOS, Windows или MacOS е все едно да се учите да танцувате, когато сте в гипс.

Освен това Unix е операционната система на Интернет. Можете да използвате Интернет и без да сте чували за Unix, но не можете да бъдете интернет-хакер, ако не разбирате Unix. По тази причина днешната хакерска култура се явява силно Unix-концентрирана. (Това не винаги е било така и на някои от хакерите от по-старо поколение това не се нрави съвсем, но симбиозата между Unix и Интернет е толкова силна, че даже силите на Microsoft не са достатъчни за повлияят на това.)

И така вземете си Unix - на мен лично ми се нрави Linux, но има и други варианти (и да, да можете да работите на един и същи компютър и под Linux, и под DOS/Windows). Научете тази операционна система. Работете с нея. Ползвайте я. Свързвайте се с нея в Интернет. Четете сорс-кодовете. Модифицирайте ги. Ще получите такъв програмистки инструментариум, за какъвто, която и да е от операционните системи на Microsoft може само да мечтае. Вие ще получите удовлетворение, и ще получите повече знания отколкото сте очаквали, и когато се огледате вече ще сте хакер-майстор.

За допълнителна информация за изучаване на Unix вижте The Loginataka.

За да се сдобиете с Linux вижте Where can I get Linux

3. Научете се да използвате World Wide Web и да пишете HTML.

Повечето от нещата, които са създадени от хакерите са невидими - с тях работят фабриките, учрежденията, университетите, но това не се забелязва от не-хакерите. WWW - е обаче едно голямо изключение, гигантска блестяща хакерска играчка, за която дори политиците признават, че променя света. Дори само заради това (а и заради множество други приятни причини) трябва да се научите да работите с Web.

Това не означава, че е нужно да знаете да ползвате браузър (това умеят всички), а трябва да се научите да пишете HTML, езика за оформяне на документите в Web. Ако вие все още не умеете да програмирате, то писането на HTML ще ви обучи на някои полезни привички. Така, че си направете web-страничка.

Но това, че си имате такава ни най-малко няма да Ви доближи до хакер. В WWW е пълно с такива странички. Повечето са безмислена, безполезна тиня. Понякога страхотно и привлекателно оформена тиня, но все пак тиня (по подробно за това виж "HTML ад" - The HTML Hell Page).

За да е стойностна страничката Ви трябва да има "content" - съдържание. Тя трябва да интересна и/или полезна за другите хакери. А това ни води към следващия раздел.

Статукво в хакерското общество

Като в повечето култури без парична икономика, Хакерландия е изградена на репутацията. Вие се опитвате да решите интересени проблеми, но колко от тях са интересни и до колко в действителност са добри Вашите решения могат да преценят само (в технически смисъл) равните на Вас или превъзхождащите Ви.

Така, че когато участвате в хакерската игра, вие се учите да се водите по това, което мислят за вашето майсторство другите (именно затова вие няма да сте хакер докато не започнат да ви наричат така другите хакери).

В частност Хакерландия е това, което антрополозите наричат "култура на подаръците". Вие си заработвате ранг и репутация не за да ръководите другите, не защото е прекрасно и не, защото имате неща, за които бленуват другите, а по-скоро, защото раздавате тези неща. А именно вашето време, майсторство и резултатите от вашия труд.

Има пет неща, които можете да правите и да печелите уважението на другите хакери:

1. Да пишете програми с отворен изходен код

Първото (най-главното и най-традиционното) - това е да пишете програми, които другите хакери считат за забавни или полезни и да раздавате изходните им кодове за използване от цялото хакерско общество.

Свикнали сме да наричаме такава работа "свободно-достъпно програмно обезпечаване" (free software), но това води до объркване много хора, които не разбират какво се има предвид под "свободно-достъпен". Сега се предпочита това да се нарича "отворен изходен код" или "open-source software".

Най-почитаните полубогове на Хакерландия са хора, написали големи и добри програми, отговарящи на широки потребности и раздали ги така, че да могат да ги използват всички.

2. Помагайте в тестването и коригирането на програми с отворен изходен код

Уважават се и тези, които тестват и коигират програми с отворен код. В този несъвършен свят ние неизбежно затриваме голяма част от времето за разработка в търсене на грешки. Затова, който и да е автор на програма с отворен код ще Ви каже, че най-добрите бета-тестери (които знаят как правилно да опишат симптомите, добре локализират проблемите, способни да коригират) са по-ценни от злато. Един такъв човек може да превърне фазата на тествате от изморителен кошмар в полезно забавяне.

Ако сте новак, намерете програма, която Ви допада и станете неин бета-тестер. Съществува съвсем естествен път от помощта при тестването на програмата, към помощта в откриването на грешки по-нататък в модифицирането и. Вие ще се научите на много неща и ще придобиете добри отношения с хората, които ще Ви помогнат в последствие.

3. Публикувайте полезната информация

Още едно добро нещо би било да подбирате полезната и интересна информация в web-страници или документи от тип FAQ (често задавани въпроси) и да ги правите общодостъпни.

Водещите на основните технически FAQ са почти толкова уважавани, колкото и авторите на програми с отворен инзходен код.

4. Помагайте и поддържайте инфраструктурата.

Хакерската култура (и инженерната разработка на Интернет) е основана на доброволците. Съществува много необходима и не особено ефективна работа, която трябва да се свърши за да се поддържа процеса: администриране на пощенски списъци, осъвременяване на новинарските групи, управление на големи архиви програмно осигуряване, разработка на RCF и други технически стандарти.

Хората, които правят това са дълбоко уважаеми, защото всеки знае, че подобна работа отнема време и не е толкова забавна като да си играеш с сорсове. Тази работа говори за самоотверженост.

5. Служете на хакерското общество

Накрая, Вие можете да служите като разпространявате самата хакерска култура (например, съставяйки ръководството "Как да стана хакер" :-)). Но с това не следва да се занимавате докато не се потопите в хакерския дух и не станете добре известни благодарение на някои от предишните четири принципа.

В хакерската култура няма явни лидери, но има "обществени герои", "племенни старейшини", историци и оратори. Когато Вие достатъчно дълго поживеете в тези релси, можете да израстнете в някакъв такъв човек. Но внимавайте: хакерите са критично настроени към твърде гласовитите си племенни старейшини.

Връзка между хакерите и маниаците.

Въпреки разпространеният мит не е необходимо да сте компютърен маниак за да сте хакер. Това понякога помага и много хакери са действително маниаци. Това им помага да останат съсредоточени върху наистина важни неща като размишления и хакерство.

Именно по тази причина много хакери с гордост се наричат маниаци, дори с далеч по-грубия термин geek (= куку, кретен, отчужден, човек привързан към компютъра си) - това е способ да декларираш независимост от общоприетите в обществото оценки. Подробна дискусия можете да намерите в The Geek Page.

Ако сте способни в достатъчна степен да се съсредоточите върху хакерството се постигат чудесни резултати и при това си имате личен живот. Днес е доста по-лесно да се постигне това отколкото през 1970-та, когато аз бях новак. Обществото вече е далеч по дружелюбно към техно-маниаците. Вече никой не се съмнява, че хакерите са си съвсем качествени любовници и съпрузи. За последното можете да погледнете Girl's Guide to Geek Guys.

Ако хакерството Ви влече по тази причина - защото нямате личен живот - и това не е лошо. В крайна сметка Вие няма да имате проблем с концентрацията. А личният живот - както е известно може да дойде по-късно.

Начин на живот
Още веднъж - за да бъдете хакер трябва да приемете мирогледа на хакера. Има няколко неща, които могат да Ви помогнат в моментите, когато не сте пред компютъра си. Те не заменят хакерството (нищо не го заменя), но много хакери се занимават и с неща, които по някакъв начин са близки с хакерството.

Четете научна фантастика. Ходете на срещи с любители на фантастиката (това е добър начин да се запознаете с хакери и "прото-хакери").
Изучавайте Дзен-будизъм или източни бойни изкуства. (Тяхната ментална дисциплина има подходящи сходни черти).
Изработете у себе си аналитичен музикален слух. Учете се да разбирате специфични видове музика. Научете се да свирите на някакъв музикален инструмент или да пеете грамотно.
Изработете у себе си умение да разбирате каламбури и игра на думи.
Научете се да пишете добре на родния си език. (Удивително множество от хакери, включително всички познати ми хакери са качествени писатели.)
Колкото повече от тези неща правите, толкова по-голяма вероятността да придобивате природно хакерски способности. защо точно тези неща не е съвсем ясно, но те са свързани със смесване на навици на лявото и дясното мозъчно полукълбо, а това е важно (хакерите трябва да могат да умеят както да градят стройни логически обяснения, така и от време на време да оценяват проблеми извън нормалната логика).

И накрая няколко неща, които не трябва да правите.

Не използвайте глупави и грандиозни потребителски имена.
Не се въвличайте в свади по Usenet (и къде ли още не).
Не се наричайте "кибер-пънк" и не обръщайте внимание на тези, които го правят.
Не изпращайте писма или електронна поща с правописни грешки.
Единствената репутация, която ще си създадете, занимавайки се с тези неща ще е за посмешище. А хакерите имат дълга памет и може години да минат докато забравят за това.


Други източници

Питър Сибак прави чудесна страница "Хакерски често задавани въпроси" - Hacker FAQ за мениджъри, които си нямат представа как да се държат с хакерите.

Написаната от мен "Кратка история на Хакерландия" - A Brief History Of Hackerdom.

Написал съм статията The Cathedral and the Bazaar, в която се разяснява как работи проекта Linux и културата на отвореният изходен код. Още по-непосредствено тази тема е разгледана в статията-продължение Homesteading the Noosphere.

Често задавани въпроси

В: Ще ме научите ли на хакерство?

От момента на първото публикуване на тази страница получавам по няколко въпроса на седмица с молба "научете ме на всичко хакерско". За съжаление не разполагам нито с време, нито с енергия да се занимавам с това. Моите собствени хакерски проекти заемат 110% от времето ми.

А даже и да можех, хакерството е мироглед и майсторство, които вие трябва да откриете сами. Ще забележите, че истинските хакери желаят да Ви помогнат, но ще престанат да Ви уважават ако започнете да ги молите да Ви поднасят на тепсия това, което им е известно. Отначало научете нещо сами. Покажете, че се стараете, че сте способни на самостоятелно обучение. И тогава се обърнете към познат хакер с въпроси.

В: Ще ми помогнете ли да кракна една система или ме научете как да краквам?
Не. Този, който може да зададе отново този въпрос след като е прочел горният текст не заслужава да научи нищо. Други подобни молби ще оставям без отговор, защото той би бил твърде груб.

В: Къде да намеря истински хакери за да си поговоря с тях?

Най-добрият начин е да намерите Вашата местна група от потребители на UNIX или Linux и посещавайте сбирките им (препратки към няколко списъка на user-групи можете да намерите на страницата LDP на Sunsite).

По рано твърдях, че няма да намерите нито един истински хакер в чатове, но ми дадоха да разбера, че ситуацията се е променила. Очевидно някои от съобществата на хакерите имат собствени канали в IRC, свързани с Gimp или Perl например.

В: Какъв език за програмиране да науча най-напред?

HTML ако още не го знаете. Има маса потресаващо бездарни книги по HTML и обезкуражаващо малко добри. На мен ми се нрави най-много HTML: The Definitive Guide.

Но HTML не е пълноценен език за програмиране. Когато почувствате, че сте готови да започнете с програмиране, бих Ви препоръчал да започнете с езика Python. Много хора ще Ви съветват да започнете с Perl - този език е много по-популярен от Python, но е по-сложен за научаване.

С е наистина важен език, но той е и по-сложен от Python или Perl. Не започвайте първо с него.

В: Няма ли да стане така, че заради програмите с отворен изходен код програмистите няма от какво да живеят?
Това не е ли невероятно. По-скоро софтуерната индустрията с отворен изходен код създава нови работни места отколкото да отнема такива. Докато е икономически по-добре да имаш написана програма, отколкото да нямаш такава на програмистите ще се плаща независимо от това дали програмата ще стане безплатна в последствие. И независимо от това, че има толкова безплатни програми все още има поръчки за нови и специализирани приложения. По подробно за това съм написал на страниците на Open Source.

В: От къде да започна? Как да си намеря безплатен UNIX ?
Навсякъде в тази страница аз съм поставил указатели към местата от които можете да получите най-широко използваните безплатни версии на UNIX. За да бъдете хакери на Вас Ви са нужни мотивация и самоинициатива, а така също и способност за самообразоване. Започнете още сега...

Автор: Ерик Реймън
Източник: yovko.net

This entry was posted on неделя, 3 август 2008 г. at 20:49 ч. . You can follow any responses to this entry through the comments feed .

0 коментара

Публикуване на коментар