Как стать хакером.
https://forumupload.ru/uploads/001b/09/4d/2/t650813.jpg
Зачем нужен этот документ? Как редактор "Жаргон-файла" (Jargon File), я часто получаю электронную почту от сетевых новичков-энтузиастов с вопросами, в конечном итоге сводящимися к одному: "Как научиться быть кудесником-хакером?". Похоже что, к сожалению, нет никаких ЧаВО (FAQs) или Web-документов, содержащих ответ на этот жизненно-важный вопрос. Так что вот вам мой. Если вы читаете копию этого документа в офф-лайне, то текущая версия оригинала (на английском языке) живет по адресу http://catb.org/~esr...cker-howto.html. Что такое хакер? "Жаргон-файл" содержит кучу определений для термина "хакер", большинство которых связано с технической компетентностью и удовольствием, получаемым от решения проблем и преодоления преград. Но только два являются действительно существенными, если вы хотите узнать, как стать хакером. Существует сообщество, некая общая культура, состоящая из опытных программистов и сетевых чародеев, история которой прослеживается вплоть до первых миникомпьютеров с разделением времени и самых ранних экспериментов с сетью ARPAnet. Члены этой культуры и дали рождение термину "хакер". Хакеры создали Интернет. Хакеры сделали операционную систему Unix тем, чем она является сегодня. Хакеры поддерживают Usenet. Хакеры обеспечивают работу World Wide Web. Если вы являетесь частью этой культуры, если вы сделали в нее свой вклад, и другие члены этой культуры знают, кем вы являетесь и называют вас хакером, то вы - хакер. Хакерский взгляд на мир не ограничивается лишь культурой хакеров-программистов. Есть люди, применяющие хакерский подход и к другим вещам, вроде электроники или музыки. В действительности, вы можете встретиться с ним на высших уровнях любой науки или искусства. Софтверные хакеры признают таких близких по духу людей и тоже могут называть их "хакерами", некоторые даже провозглашают, что хакерская природа на самом деле не зависит от среды, в которой работает хакер. Но в остальной части данного документа мы сосредоточимся на навыках и подходах софтверных хакеров, а также на традициях той общей культуры, что породила термин "хакер". Также есть и другая группа людей, громко именующих себя хакерами, но не являющихся таковыми. Это те люди (преимущественно молодые люди мужского пола), которым достаётся за взлом компьютерных и телефонных систем. Настоящие хакеры называют таких людей "кракерами" и не хотят иметь с ними ничего общего. Настоящие хакеры в большинстве своём считают кракеров ленивыми, безответственными и не особо умными людьми. То, что человек способен взломать систему безопасности, не делает его хакером, точно так же как умение угонять тачки не делает вас автомобильным мастером. К несчастью, многие журналисты и писатели введены в заблуждение и используют слово "хакер" для описания кракеров, и это бесконечно раздражает настоящих хакеров. Главное различие в следующем: хакеры создают вещи, а кракеры их ломают. Если вы хотите стать хакером, то продолжайте чтение. Если же вы хотите стать кракером, то отправляйтесь читать ньюз-группу alt.2600 или журнал "Хакер" и приготовьтесь отсидеть от пяти до десяти лет в тюрьме, когда обнаружите, что не настолько ловки, насколько полагали. Это все, что я намерен сказать о кракерах. Хакерский подход Хакеры решают проблемы и создают вещи, они верят в свободу и в добровольную взаимопомощь. Для того, чтобы вас воспринимали как хакера, вы должны вести себя так, как если бы это была ваша собственная жизненная позиция. А для того, чтобы вести себя так, будто это ваша позиция, вы должны действительно верить в это. Но если вы собираетесь культивировать в себе поведение хакера лишь для получения признания в культуре, то вы упустили суть. Стать человеком, верящим в подобные вещи - важно для вас, потому что это поможет вам учиться и сохранить мотивацию. Как и в любом творчестве, самый эффективный способ стать мастером - это подражать мировоззрению мастеров, не только интеллектуально, но также и эмоционально. Как гласит поэма Дзэн-буддизма, Чтобы следовать по пути: смотри на мастера, подражай мастеру, иди с мастером, видь сквозь мастера, стань мастером. Так что если вы хотите стать хакером, то повторяйте следующие вещи, пока не поверите в них: 1. Мир полон пленительных проблем, ждущих своего решения. Быть хакером - это огромное удовольствие, но это удовольствие, которое требует массы усилий. Для подобных усилий должна быть мотивация. Атлеты-чемпионы черпают мотивацию из своего рода физического удовольствия, получаемого от доведения собственного тела до совершенства, от преодоления собственных физических пределов. Аналогично, чтобы быть хакером вы должны получать максимум удовольствия от решения проблем, от оттачивания своих навыков, от тренировки своего интеллекта. Если же вы не из тех, кто ощущает подобные вещи естественным образом, то вам понадобится стать таким, чтобы сделаться хакером. В противном случае вы обнаружите, что вся ваша хакерская энергия ушла на такие раздражители, как секс, деньги и общественное признание. (Вы также должны развить что-то вроде веры в ваши собственные способности к обучению. Веры в то, что даже если вы возможно и не знаете всего, что необходимо для решения проблемы, но если вы освоили лишь кусочек и на этом научились, то уже знаете достаточно, чтобы решить и следующий кусок - и так далее, пока все не будет сделано.) 2. Ни одна проблема не должна быть решена дважды. Творческие мозги - это ценный и ограниченный ресурс. Не следует растрачивать их на переизобретение колеса в то время, как огромное число замечательных проблем ожидают своего решения. Чтобы вести себя как хакер, вы должны верить, что время других хакеров также драгоценно, причем настолько, что почти моральным долгом для вас является поделиться информацией, решить проблемы, а затем просто раздать решения, чтобы другие хакеры могли решать новые проблемы вместо того, чтобы беспрестанно возвращаться к старым. (Вы не обязательно должны верить, что обязаны раздать все плоды своего творчества, хотя те хакеры, кто так делает, - наиболее уважаемы среди других хакеров. С ценностями хакеров вполне согласуется продажа плодов творчества, достаточная для обеспечения вас пищей, кровом и компьютерами. Согласуется это и с использованием ваших хакерских навыков для поддержания семьи и даже для того, чтобы разбогатеть, пока занимаясь этим вы не теряете вашей преданности искусству и братьям - хакерам) 3. Скука и рутина - это зло. Хакеры (и вообще творческие люди) никогда не должны заниматься скучными вещами или погрязать в рутине монотонной работы, потому что когда это происходит, то это означает, что они не делают того, что могут делать лишь они - решать новые проблемы. Подобное расточительство вредит каждому. Поэтому скука и рутина - это не просто неприятные вещи, это зло. Чтобы вести себя как хакер, вы должны верить в этот факт настолько, чтобы желать автоматизации всех скучных мелочей настолько, насколько возможно, и не только для себя, но и для всех остальных (особенно, для других хакеров). (Имеется одно явное исключение. Иногда хакеры занимаются вещами, которые могут показаться монотонными или скучными стороннему наблюдателю, в качестве упражнения для прочистки мозгов или же для выработки навыка, либо для приобретения особого рода опыта, который невозможно получить иным путем. Но все это делается по собственному желанию, никто из умеющих думать никогда не должен принуждаться к скучной работе.) 4. Свобода - это благо. Хакеры по самой своей природе анти-авторитарны. Любой, кто может отдавать вам приказания, может помешать вам находить решение любой проблемы, вас очаровавшей. И, учитывая образ мышления авторитарных людей, найдутся какие-нибудь потрясающе идиотские причины, чтобы это сделать. Так что с авторитарным подходом следует сражаться всюду, где вы его встретите, дабы он не душил вас и других хакеров. (Это не то же самое, что сражаться с любой властью. Детям нужно руководство, преступность необходимо сдерживать. Хакер может соглашаться на принятие какого-то рода руководства, чтобы получить нечто более нужное ему, чем время, которое он потратит на выполнение приказов. Но это ограниченная и разумная сделка; то же предательство самого себя, которое обычно нужно руководству, не должно приниматься.) Авторитаризм зависит от цензуры и секретности. Его адепты не верят в добровольное сотрудничество и обмен информацией, им нравится только такое "сотрудничество", которым руководят они. Поэтому, чтобы вести себя как хакер, вы должны выработать в себе инстинктивное неприятие цензуры, секретности, а также применения силы или лжи для принуждения людей, способных самостоятельно принимать решения. И необходимо жить, руководствуясь этой верой. 5. Поведение не заменит компетентность. Для того, чтобы быть хакером, вы должны развить в себе некоторые из перечисленных подходов. Но увлёкшись поведением вы сделаетесь хакером не в большей степени, чем спортсменом-рекордсменом или рок-звездой. Для того, чтобы стать хакером, требуются интеллект, практика, самоотверженность и тяжкий труд. Поэтому вам придётся научиться с недоверием относится к поведению, но при этом уважать компетентность любого рода. Хакеры не позволят позерам тратить впустую их время, но поклоняются компетентности, особенно - хакерской компетентности, хотя компетентность хороша в чём угодно. Особо ценится обладание редко встречающимися, но очень необходимыми навыками. Лучше всего быть компетентным в тех навыках что требуют проницательного ума, сноровки и концентрации. Если вы боготворите компетентность, вы получаете наслаждение, развивая её в себе. Тяжкий труд и преданность делу станут для вас захватывающей игрой, а не рутиной. И это жизненно необходимо для того, чтобы стать хакером. Основные навыки хакера Хакерский взгляд на жизнь конечно важен, но мастерство гораздо более важно. Поведение не заменит компетентости, и существует определенный набор базовых навыков, которыми вам необходимо обладать, прежде чем любой из хакеров помыслит назвать хакером и вас. Этот базовый набор со временем потихоньку изменяется по мере того, как технология порождает новые навыки и делает ненужными устаревшие. Например, обычно упоминалось программирование на машинном языке, но, вплоть до недавнего времени, в набор не включали язык HTML. Однако, в сегодняшний комплект вполне определенно входят следующие компоненты: 1. Научитесь программировать. Это, конечно же, фундаментальный хакерский навык. Если вы не знаете ни одного компьютерного языка, я рекомендовал бы начать с языка Python ещё есть Русскоязычный сайт. Он аккуратно разработан, хорошо документирован и сравнительно доброжелателен к новичкам. Несмотря на то, что он хорош как первый язык, это не просто игрушка. Это очень мощный и гибкий язык, хорошо подходящий для больших проектов. Java - тоже хорош для изучения программирования. Он сложнее, чем Python, но генерирует более быстрый код. Мне кажется, что он может стать прекрасным вторым языком. Но знайте, что вы не достигнете хакерского уровня мастерства (или даже просто уровня хорошего программиста), если будете знать лишь один или два языка. Вам необходимо научиться мыслить об алгоритмических проблемах вообще, независимо от языка программирования. Чтобы быть настоящим хакером, вам надо достичь уровня, на котором вы сможете выучить новый язык за несколько дней, соотнося положения руководства с тем, что вам уже известно. Это означает, что вам следует выучить несколько очень разных языков. Если соберётесь заниматься серьёзным программированием, то вам придется выучить Си, основной язык операционной системы Unix. C++ также родственен Си. Хотя ни то ни другой не являются языками, с которых стоит начинать. Другие языки первостепенной важности для хакеров - это Perl и LISP. Язык Perl имеет смысл выучить из практических соображений: он очень широко используется для активных web-страниц и системного администрирования, так что даже если вам никогда не придется писать на Perl, вы должны научиться его читать. LISP стоит выучить хотя бы ради тех глубоких познаний, которые вы обретете, когда наконец поймёте его. Эти познания сделают вас прекрасным программистом на всю оставшуюся жизнь, даже если вы никогда особо и не будете использовать сам LISP (Первоначальные навыки программирования на LISP можно достаточно легко получить, создавая и модифицируя расширения текстового редактора Emacs). Лучше всего, на самом деле, выучить все четыре этих языка (Python, C/C++, Perl, и LISP). Помимо того, что это самые важные хакерские языки, они демонстрируют очень разные подходы к программированию и каждый из них научит вас ценным вещам. Я не могу дать здесь развернутые инструкции относительно того, как научиться программировать, - это сложное искусство. Но я могу сказать вам, что книги и курсы этому не научат (многие, возможно, большинство лучших хакеров - это самоучки). Что на самом деле может научить программированию, так это (а) чтение исходного кода и (б) написание исходного кода . Научиться программировать - это как научиться писать хорошим естественным языком. Самый лучший способ для этого - почитать что-то из написанного признанными мастерами литературы, затем написать немного самому; прочесть побольше, написать немного побольше; прочитать еще больше, написать еще побольше... И повторять этот процесс до тех пор, пока ваши программы не разовьются в нечто мощное и экономичное. Отыскать хорошие исходные тексты для изучения раньше было сложно, потому что было очень мало больших программ, доступных в исходных текстах и пригодных для изучения и экспериментов юных хакеров. Теперь ситуация кардинально изменилась: программы в исходных текстах, средства разработки и целые операционные системы (всё это создано хакерами) теперь широко доступны. Что подводит меня прямо к следующему разделу... 2. Достаньте один из вариантов Unix в исходных текстах, научитесь его использовать и с ним работать. Я полагаю, что вы имеете персональный компьютер или можете получить к нему доступ (сегодня этим ребятам всё достается так легко :-)). Единственный и самый важный шаг, который любой из новичков может предпринять для приобретения хакерских навыков, - это раздобыть копию Linux или одной из версий BSD-Unix, установить ее на своём компьютере, и использовать её. Да, в мире есть и другие операционные системы помимо Unix. Но их распространяют в скомпилированных машинных кодах - вы не сможете легко изучать эти коды, и тем более не сможете их модифицировать. Учиться хакерству на машинах, работающих под DOS, Windows или MacOS - это все равно что учиться танцевать, будучи полностью загипсованным. Правда, под MacOS/X это возможно, но в исходных текстах доступна только часть системы, так что вполне возможно, что вы наткнётесь на много стен, и вам придётся выработать в себе неприятную зависимость от пропритарного кода Apple. Хотя, если вы сконцентрируете своё внимание на Unix, лежащей в её основе, вы сможете кое чему научится. Кроме того, Unix - это операционная система Интернета. Хотя вы можете научиться использовать Интернет и не зная Unix, вы не сможете быть Интернет-хакером, не понимая Unix. По этой самой причине сегодняшняя хакерская культура является весьма сильно Unix-сконцентрированной. (Это не всегда было так, и некоторым из прежних хакеров такое положение дел не очень нравиться, но симбиоз между Unix и Интернетом стал настолько прочен, что даже сил Microsoft не хватает, чтобы серьезно на это влиять.) Так что установите себе Unix - мне самому нравится Linux, но есть и другие варианты (тем более, что вы можете работать как под Linux, так и под DOS/Windows на одной и той же машине). Выучите эту ОС. Работайте с ней. Экспериментируйте с ней. Общайтесь через неё с Интернетом. Читайте исходные тексты. Модифицируйте их. Вы получите такой богатый программистский инструментарий (включая Python, C, Lisp и Perl), о котором любая из ОС фирмы Microsoft и не мечтала. Вы получите массу удовольствия, и усвоите гораздо больше знаний, чем предполагали в процессе обучения, и поймёте это, когда взгянете на вась этот процесс уже будучи мастером-хакером. Для дополнительной информации об изучении Unix см. The Loginataka. Чтобы заполучить в свои Linux, см. Where can I get Linux ("Где мне взять Linux"). 3. Научитесь использовать World Wide Web и писать на HTML. Большинство из тех вещей, что созданы хакерской культурой, делают свое дело невидимо, помогая работать фабрикам, учреждениям и университетам без сколь-нибудь заметного влияния на жизнь не-хакеров. Web - это одно большое исключение, гигантская блестящая хакерская игрушка, которая даже по признанию политиков изменяет мир. Лишь по одной этой причине (а также и множеству других приятных причин) вам следует научиться работать с Web. Это не означает, что достаточно просто научиться управляться с обозревателем (это любой умеет), это значит, что вы должны научиться писать на HTML, языке разметки документов Web. Если вы еще не умеете программировать, то писание на HTML обучит ваше мышление некоторым полезным привычкам, которые пригодятся при освоении языков программирования. Так что делайте свою домашнюю страничку. Попробуйте XHTML, который более аккуратно проработан чем классический HTML. (Есть много инструкций для начинающих в Web; вот одна из них.) Но простое обладание домашней страничкой даже и близко не подведёт вас к тому, чтобы стать хакером. В Web полным-полно домашних страничек. Большинство из них - это бессмысленный, бесполезный хлам. Крайне броско и привлекательно оформленный хлам, не спорю, но всё равно хлам (подробнее об этом см. страничку "Ад HTML" -The HTML Hell Page). Чтобы быть стоящей, ваша страничка должна иметь "контент" - содержание. Она должна быть интересной и / или полезной для других хакеров. А это подводит нас к следующему разделу... 4. Если вы не знаете Английский, изучите его. Будучи американцем и англоязычным автором, я раньше старался избегать подобных предложений, чтобы они не воспринимались как культурный империализм. Но некоторые люди, говорящие на других языках, настояли на том, чтобы я упомянул, что английский - это действующий язык хакерской культуры и Интернета, и что вам придётся изучить его, чтобы принимать участие в хакерском сообществе. Это - самая настоящая правда. Ещё в 1992 году я понял, что многие хакеры, для которых английский является вторым языком, используют его в технических дискуссиях, даже если все участники дискуссии имеют другой, общий родной язык. Мне также стало известно, что английский язык имеет более богатый технический словарь, чем любой другой язык, и поэтому более всего подходит как средство общения хакеров. По этим же причинам, переводы технической литературы, написанной на английском языке, часто неудовлетворительны (если вообще делаются). Линус Торвальдс, будучи финном, комментирует свой код на английском (никогда не было замечено за ним обратное). Его знание английского языка было одним из важнейших факторов в его способности привлечь разработчиков со всего мира для работы над ядром Linux. Этим примером стоит воспользоваться. Статус в хакерской культуре Как и большинство культур без денежной экономики, Хакерландия строится на репутации. Вы пытаетесь решить интересные проблемы, но вот насколько они интересны, и насколько в действительности хороши ваши решения, - это нечто такое, о чем обычно могут судить только (в техническом смысле) равные вам или превосходящие вас. Таким образом, когда вы играете в хакерские игры, вы учитесь вести счет главным образом по тому, что думают о вашем мастерстве другие (именно поэтому вы не будете хакером до тех пор, пока вас не станут так называть другие хакеры). Данный факт затеняют как образ хакера-одиночки, так и определенные табу хакерской культуры (ныне существенно ослабевшие, но все еще мощные), не допускающие, чтобы чье-то эго или внешнее признание вообще могли бы быть мотивацией для хакера. В частности, Хакерландия - это то, что антропологи именуют "культурой даров". Вы зарабатываете статус и репутацию не тем, что руководите другими людьми, и не тем что прекрасны, и не тем что имеете вещи, которые являются предметом вожделения других. Но скорее тем, что раздаете вещи. В частности, одаривая своим временем, своим мастерством и результатами своего творчества. Есть пять основных типов вещей, которые вы можете делать, чтобы вас уважали хакеры: 1. Пишите программы с открытыми исходными текстами. Первое (самое главное и самое традиционное) - это писать программы, которые другие хакеры считают забавными или полезными, и раздавать исходные тексты программ для использования всей хакерской культурой. Мы привыкли называть эти программы "свободным программным обеспечением" (free software), но это привело в замешательство очень многих людей, точно не понимавших, что подразумевалось под словом "свободное". Всё дело в том, что в английском языке слово "free" используется как для слова "свобода" так и слова "бесплатно". Поэтому очень часто для такого программного обеспечения предпочитают использовать термин "с открытым исходным текстом" или "open-source software". Впрочем, в России в ходу оба термина. Мы знаем разницу между свободой и бесплатным куском сыра. Наиболее почитаемые полубоги Хакерландии - это люди, которые написали большие и мощные программы, отвечающие самым широким потребностям, и которые раздали их всем, так что каждый теперь их использует. 2. Помогайте тестировать и отлаживать программы в открытых исходных текстах. Почитаемы также те, кто тестирует и отлаживает программы в открытых исходных текстах. В этом несовершенном мире мы неизбежно затрачиваем самую большую часть времени разработки программы на фазу отладки. Именно поэтому любой соображающий автор программ с открытыми исходными текстами скажет вам, что хорошие бета-тестеры (знающие, как внятно описать симптомы, хорошо локализующие проблемы, терпящие проблемы в тестовом выпуске и применяющие несколько простых диагностических подпрограмм) ценятся на вес золота. Всего один такой человек может превратить фазу отладки из затянутого изнуряющего кошмара в малозаметную задержку. Если вы новичок, то попытайтесь найти разрабатываемую программу, которая вам интересна, и станьте хорошим бета-тестером. Существует вполне естественный путь продвижения от помощи в тестировании программ к помощи в их отладке и далее, к помощи в их модификации. Вы многому научитесь таким способом и породите добрую карму в отношениях с людьми, которые помогут вам впоследствии. 3. Публикуйте полезную информацию. Еще одна хорошая вещь - отбирать и накапливать полезную и интересную информацию на Web-страницах или документах типа ЧаВО (FAQ или "часто задаваемые вопросы и ответы"), и делать их общедоступными. Ведущие основных технических ЧаВО почти столь же уважаемы, как и авторы программ с открытым исходным кодом. 4. Помогайте поддерживать работу инфраструктуры. Хакерская культура (и инженерное развитие Интернет, к слову сказать) основана на добровольцах. Имеется масса необходимой, но не особо эффектной работы, которую нужно делать, чтобы поддерживать процесс: администрирование списков рассылки, модерирование новостных групп, управление большими архивами программного обеспечения, разработка RFC и других технических стандартов. Люди, хорошо делающие такого рода вещи, глубоко уважаемы, поскольку каждый знает, что подобная работа требует кучу времени и не так забавна как игры с кодами. Эта работа свидетельствует о самоотверженности. 5. Служите самой хакерской культуре. Наконец, вы можете служить и распространять саму культуру (например, составляя скрупулезное руководство "как стать хакером" :-)). Но не стоит этим заниматься до тех пор, пока вы не поваритесь в этой культуре достаточное время и не станете хорошо известны благодаря одной из первых четырёх вещей. В хакерской культуре нет явных лидеров, но здесь есть "культурные герои", "племенные старейшины", историки и ораторы. Когда вы достаточно долго поживёте в этих траншеях, то сможете вырасти в одного из таких людей. Но остерегайтесь: хакеры настороженно относятся к крикливым старейшинам, так что видимое достижение такого рода славы таит в себе опасность. Вместо того, чтобы стремиться к этому, вам лучше как бы не заботиться об этом и тогда слава сама упадет на вас, а уж затем можно быть скромным и милостивым в своём статусе. Связь между хакерами и "ботаниками" (нердами, nerds) Вопреки расхожему мифу, вам не обязательно быть "ботаниками", чтобы быть хакером. Это, однако, помогает, и многие хакеры действительно являются "ботаниками". Статус изгоя общества помогает вам оставаться сосредоточенными на действительно важных вещах, таких как размышления и хакерство. Именно по этой причине многие хакеры носят ярлык "ботаник" и даже используют в качестве знака доблести более грубый термин "маньяк" (гик, geek) - это их способ декларации своей независимости от общепринятых в обществе оценок. С развернутой дискуссией по этому поводу можно познакомиться на "странице маньяков" - The Geek Page. Если вы способны в достаточной степени сосредоточиться на хакерстве, достигать здесь заметных результатов и при этом иметь личную жизнь - что ж, прекрасно. Сегодня это намного легче, чем в 1970-е, когда был новичком я. Культурный мейнстрим стал теперь намного дружелюбнее к техно-ботаникам. Есть даже растущее количество людей, обнаруживающих, что хакеры зачастую могут быть вполне качественными любовниками и супругами. Если же вас влечет к хакерству по той причине, что у вас нет личной жизни, что ж, и это неплохо. По крайней мере, у вас не будет проблем с концентрацией. А личная жизнь - кто знает, может она придёт к вам позже. Черты образа жизни Ещё раз, чтобы быть хакером, вы должны обрести мировоззрение хакера. Есть несколько вещей, которые могут помочь в те моменты, когда вы не находитесь рядом с компьютером. Они не заменяют хакерство (его ничто не заменит), но многие хакеры ими занимаются и, по их ощущениям, это на каком-то фундаментальном уровне объединяет их с сутью хакерства. Читайте научную фантастику. Ходите на встречи любителей фантастики (это хороший способ познакомиться с хакерами и "прото-хакерами"). Изучайте Дзэн-буддизм и/или восточные искусства боя. (Их ментальная дисциплина имеет важные черты, сходные с хакерской). Вырабатывайте в себе аналитический музыкальный слух. Учитесь понимать специфические виды музыки. Учитесь неплохо играть на каком-нибудь музыкальном инструменте или грамотно петь. Вырабатывайте своё понимание каламбуров и игр в слова. Учитесь хорошо писать на своем родном языке. (Это удивительно, но многие хакеры, включая всех известных мне лучших хакеров, являются качественными писателями.) Чем больше из этих вещей вы уже делаете, тем больше вероятность того, что вы представляете собой природный хакерский материал. Почему перечислены именно эти вещи - не вполне ясно, но они связаны со смешиванием навыков левого и правого полушарий мозга, а это представляется важным (для хакеров необходимо уметь как выстраивать стройные логические обоснования, так и время от времени оценивать проблему вне связи с очевидной логикой). И, наконец, несколько вещей, которые делать не следует. Не используйте глупые и напыщенные пользовательские имена или клички. Не вовлекайтесь в свары и перебранки в Usenet (или где-либо еще). Не называйте себя "киберпанком" и не тратьте свое время на тех, кто это делает. Не отправляйте письма или электронную почту, переполненные ошибками правописания. Единственная репутация, которую вы себе создадите, занимаясь любой из этих вещей - это вы станете посмешищем. У хакеров долгая память, и вам могут понадобиться годы, чтобы об этом забыли. Проблема с пользовательскими именами или кличкаси заслуживает особого внимания. Скрывать свою личность за кличкой - бессмысленное и глупое поведение, характерное для кракеров, софтверных пиратов и других низших форм жизни. Хакеры не занимаются этим: они гордятся тем, что они делают, и предпочитают быть ассоциированными со своими реальными именами. Так что, если у вас есть кличка, выбросьте её. В хакерской культуре она будет делать вас лузером. Другие ресурсы Питер Сибак ведет превосходную страницу "Хакер-ЧаВО" - Hacker FAQ для менеджеров, не представляющих себе как иметь дела с хакерами. Мною написана также "Краткая история Хакерландии" - A Brief History Of Hackerdom. Я написал статью "Собор и Базар" - The Cathedral and the Bazaar, в которой разъясняется, как работают проект Linux и культура открытых исходных кодов. Еще более непосредственно эта же тема рассмотрена в статье-продолжении "Раздел Ноосферы" - Homesteading the Noosphere. Рик Моен написал великолепный документ о том, как создать группу пользователей Linux. Также мы с ним создали другой документ, "Как задавать умные вопросы" (How To Ask Smart Questions). Он поможет вам искать помощь таким образом, чтобы вы её действительно получили. Если вам нужны познания в том, как персональные компьютеры, Unix и Интернет работают, почитайте Фундаментальные основы Unix и Интернет (The Unix and Internet Fundamentals HOWTO). Когда вы выпускаете программы или пишете исправления к программам (патчи), постарайтесь следовать указанием в Как выпускать программы (Software Release Practice HOWTO). Если вам понравилась поэма Дзэн, вам может понравится Rootless Root: The Unix Koans of Master Foo. Часто задаваемые вопросы В: Вы научите меня хакерству? С момента первой публикации этой страницы я получал от людей по нескольку запросов в неделю с просьбой "научить всему хакерскому". К сожалению, я не располагаю ни временем, ни энергией этим заниматься. Мои собственные хакерские проекты занимают 110% моего времени. И даже если бы они у меня были, хакерство - это мировоззрение и мастерство, которым вы должны научиться в основном сами. Вы обнаружите, что хотя настоящие хакеры и желают вам помочь, но они не будут вас уважать, если вы станете просить накормить вас с ложечки всем, что им известно. Сначала научитесь нескольким вещам сами. Покажите, что стараетесь, что способны к самостоятельному обучению. И уже потом отправляйтесь к знакомым хакерам с вопросами. Если вы пишете хакеру письмо с просьбой о помощи, вот две вещи, которые вы должны в первую очередь знать. Во-первых, мы обнаружили, что люди, которым лень или не хочется писать аккуратно письма - обычно ленивы в становлении хорошими хакерами. Так что постарайтесь писать корректно, и иметь хорошую грамматику и пунктуацию, в противном случае вас просто проигнорируют. Во-вторых, даже не пытайтесь просить ответить на адрес, отличающийся от того, с которого пишите - замечено, что люди, которые так поступают, обычно используют ворованные аккаунты, а нам не интересно вознаграждать или помогать ворам. В: Тогда как мне начать? Cамый лучший способ - найти вашу местную группу пользователей Linux и сходить на их встречи (ссылки на несколько списков групп пользователей можно найти на странице LDP General Linux Information Page; наверняка поблизости от вас будет одна из таких. Члены LUG наверняка дадут вам Linux, если вы попросите, и точно помогут установить его и начать пользоваться. В: В каком возрасте можно начинать? Не слишком ли поздно мне учиться? Любой возраст, в котором у вас есть желание начать, хорош. Большинство начинают интерисоваться в промежутке между 15 и 20 годами, но я знаю исключения в обоих направлениях. В: Сколько может занять обучение хакерству? Это зависит от того, насколько вы талантливы, и насколько настойчиво вы этим занимаетесь. Большинство могут получить достаточные умения в промежуток от полутора до двух лет, если будут настойчивыми. Но не думайте, что на этом всё заканчивается: если вы настоящий хакер, вы будете учиться и улучшать свои умения всю оставшуюся жизнь. В: Подходят ли Visual Basic или C# для того, чтобы учиться программированию? Если вы задаёте этот вопрос, это наверняка значит, что вы думаете о том, чтобы заниматься хакерством под Windows. Это является само по себе плохой идеей. Когда я сравнил попытки хакать под Winndows с попыткой танцевать в гипсе, я не прикалывался. Не пытайтесь идти этой дорогой. Она ужасна, и никогда не перестанет быть такой. Есть особые проблемы с Visual Basic и C#; и в первую очередь они связаны с тем, что они не переносимы между ОС. Несмотря на то, что есть прототипы свободных реализаций этих языков, соответствующие стандарты ECMA не покрывают чего либо, кроме маленького набора их программных интерфейсов. Под Windows их поддержка библиотеками пропритарна, и принадлежит только одному поставщику (Microsoft). Если вы не будете особо заботиться о том, какими возможностями пользуетесь, более мощными чем те, которые любой новичок может реализовать - вы кончите тем, что будете заблокированы только в те платформы, которые Microsoft захочет поддерживать. Если вы начнёте с Unix, вы получите намного лучший выбор языков и библиотек. Visual Basic особо ужасен. Как и другие Бейсики, он плохо разработан и научит вас плохому стилю программирования. И не просите меня объяснить их в деталях - эти объяснения займут целую книгу. Лучше изучите хорошо разработанный язык. Одним из этих плохих стилей является зависимость от библиотек, виджетов, средств разработки одного поставщика. В общем, любой язык, который не поддерживатся полноценно как минимум в Linux или одном из BSD Unix-ов, и/или как минимум тремя различными поставщиками операционных систем, не подходит для обучения хакерству. В: Не поможете ли вы мне кракнуть систему, или может научите, как их вскрывать? Нет. Любой, кто может опять задавать подобный вопрос по прочтении данного текста, - туп настолько, что его ничему нельзя научить, даже если бы у меня было на это время. Любые подобные просьбы будут проигнорированы, либо же ответ будет крайне грубым. В: Как я могу узнать пароль от чьего- либо аккаунта? Это кракинг. Отвали, идиот. В: Как я могу читать/прослеживать чью либо почту? Это кракинг. Исчезни, дебил. В: Как я могу украсть права оператора на IRC? Это кракинг. Отвали, кретин. В: Меня взломали. Можете ли вы помочь мне защититься от будущих атак? Нет. Обычно такой вопрос мне задают бедняги, которые используют Microsoft Windows. Невозможно эффективно защитить Windows от попыток взлома - код и архитектура Windows имеет слишком много ошибок, которые делают попытки её защиты похожими на ремонт лодки скотчем. Единственное решение состоит в переходе на Linux или какую-нибудь другую операционную систему, которая разрабатывалась так, чтобы быть хотя бы немного безопасной. В: У меня есть проблемы с программами для Windows. Можете ли вы помочь мне? Да. Перейдите в командную строку DOS и введите команду "format c:". Все ваши проблемы исчезнут за несколько минут. Где мне найти настоящих хакеров, чтобы с ними поговорить? Самый лучший способ - найти вашу местную группу пользователей Unix или Linux и сходить на их встречи (ссылки на несколько списков групп пользователей можно найти на странице LDP на Sunsite). (Как-то раньше я сказал, что вам не найти ни одного настоящего хакера в IRC чатах, но мне дали понять, что ситуация меняется. Очевидно, некоторые из сообществ настоящих хакеров, связанных с такими вещами как GIMP и Perl, теперь имеют свои IRC-каналы.) В: Можете ли вы порекомендовать полезные книги по темам, связанным с хаком? Я занимаюсь Linux Reading List HOWTO, который может оказаться полезным для вам. Также Logitanaka может быть интересной. По языку Python вы можете найти учебные материалы на сайте Python. Русскоязычный читатель может найти ещё более интересные материалы на русском сайте о Python В: Надо ли хакеру знать высшую математику? Нет. Несмотря на то, что вы должны быть способны к логическому мышлению и следовать по причинным цепочкам, хакерство требует совсем немного математики или арифметики. В частности, вам не понадобится тригонометрия, численные методы и анализ (оставим это для радиоинженеров :-)). Могут оказаться полезными знания в Булевой алгебре, комбинаторике, теориях множеств и графов. В: Какой язык следует выучить первым? XHTML (самый свежий диалект HTML), если вы его еще не знаете. Есть масса расфуфыренных и потрясающе бездарных книг по HTML, но обескураживающе мало хороших. Мне больше всего нравится HTML: The Definitive Guide. Но HTML - это не полноценный язык программирования. Когда вы почувствуете, что готовы начать программировать, я бы порекомендовал начать с языка Python. Многие люди будут рекомендовать вам начинать с Perl, и этот язык более популярен чем Python, но его сложнее выучить. Си - действительно важный язык, но он и намного сложнее, нежели Python или Perl. Не пытайтесь выучить его первым. Пользователи Windows, не пытайтесь пользоваться Visual Basic. Он привьёт вам плохие привычки, и он не переносим с Windows. Просто избегайте. В: Какое "железо" мне понадобится? Раньше персональные компьютеры были достаточно слабыми, и имели мало памяти, так что они накладывали искусственные ограничения на процесс изучения хакинга. Это перестало быть правдой несколько лет назад - любого компьютера начиная с Intel 486DX50 достаточно даже для разработки, X и работы в Интернете, а даже самого маленького винчестера, который можно встретить в магазине, более чем достаточно. Важным требованием при выборе компьютера, на котором обучаться, является его совместимость с Linux или BSD (на выбор, разница невилика). Это правило обычно выполняется на всех современных компьютерах. Самой неприятной частью являются модемы - некоторые являются разработанными специально для Windows и врядли будут работать с Linux. Есть ЧаВО по совместимости с железом. Свежую версию можно найти здесь. В: Я хочу помочь. Можете ли вы выбрать для меня проблему, которую надо решить? Нет, потому что я не могу знать ваших способностей или интересов. Вы должны быть само-мотивированными, в противном случае вы не задержитесь на задаче. Вот почему вы практически никогда не должны позволять другим людям принимать за вас решения. Попробуйте лучше вот что. Посмотрите список анонсов на Freshmeat в течении нескольких дней, и если увидите то, что заставит вас подумать "Круто! Я бы хотел над этим поработать!", присоединяйтесь. В: Должен ли я ненавидеть и ругать Microsoft? Нет, ты не должен. Но не потому что Microsoft не отвратительно, но потому, что хакерская культура существовала задолго до Microsoft, и будет существовать и тогда, когда Microsoft станет историей. Лучше пустить свою энергию не на выражение ненависти к Microsoft, а на своё умение. Пишите хорошие программы - это будет бить по Microsoft достаточно сильно и без порчи вашей кармы. В: А не станет ли так, что из-за программ с открытыми исходными текстами программистам будет не на что жить? Ну, это вряд ли. Пока что, похоже, индустрия программного обеспечения с открытым исходным кодом скорее создает рабочие места, нежели их сокращает. Если экономически более прибыльно иметь написанную программу, чем такой программы не иметь, то программисту будут платить независимо от того, станет ли эта программа бесплатной после ее создания. И, независимо от того, как много будет написано свободных программ, всегда еще больше будет запросов на новые и специализированные приложения. Более подробно я написал об этом на страницах Open Source. В: Как мне начать? Где можно достать бесплатный Unix? Повсюду на этой странице я вставил указатели на те места, где можно взять наиболее широко используемые бесплатные версии Unix. Чтобы быть хакером, вам нужны мотивация и инициатива, а также способность к самообразованию. Начинайте прямо сейчас...