Как стать хакером.
Моя инструкция.
Жалко не сам сочинял! Хакерский взгляд на жизнь - это важно, но мастерство - многократно важнее. Позиция не заменит компетентости, и существует определенный набор базовых навыков, которыми вам необходимо обладать, прежде чем любой из хэкеров помыслит назвать хэкером и вас.
Этот базовый набор со временем потихоньку изменяется по мере того, как технология порождает новые навыки и делает ненужными устаревшие. Например, обычно упоминалось программирование на машинном языке, но, вплоть до недавнего времени, в набор не включали язык HTML. Однако, в сегодняшний комплект вполне определенно входят следующие компоненты:
1. Научитесь программировать.
Это, конечно же, фундаментальный хэкерский навык. Если вы не знаете ни одного компьютерного языка, я рекомендовал бы начать с языка Python. Он понятно разработан, хорошо документирован и относительно доброжелателен к новичкам. Несмотря на то, что он хорош для первого языка, это не просто игрушка. Это очень мощный и гибкий язык, хорошо подходящий для больших проектов.
Но знайте, что вы не достигнете хэкерского уровня мастерства (или даже просто уровня хорошего программиста), если будете знать лишь один язык. Вам необходимо научиться мыслить о проблемах программирования вообще, независимо от любого конкретного языка. Чтобы быть настоящим хэкером, вам надо достичь уровня, на котором вы сможете выучить новый язык за несколько дней, соотнося положения руководства с тем, что вам уже известно. Это означает, что вам следует выучить несколько очень разных языков.
Если вы занимаетесь серьезным программированием, то вам придется выучить Си, основной язык операционной системы Unix (хотя это и не тот язык, который следует пытаться выучить первым). Другие языки первостепенной важности для хэкеров - это Perl и LISP. Язык Perl имеет смысл выучить из практических соображений: он очень широко используется для активных web-страниц и системного администрирования, так что даже если вам никогда не придется писать на Perl, вы должны научиться его читать. LISP стоит выучить ради тех глубоких просвещенных познаний, которые вы обретете, когда наконец его освоите. Эти познания сделают вас прекрасным программистом на всю оставшуюся жизнь, даже если вы никогда особо и не будете использовать сам 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 на одной и той же машине). Выучите эту ОС. Работайте с ней. Возитесь с ней. Общайтесь через нее с Интернетом. Читайте коды. Модифицируйте их. Вы получите такой программистский инструментарий (включая C, Lisp и Perl), о котором любая из ОС Microsoft и не мечтала. Вы получите удовольствие, и вы усвоите больше знаний, чем предполагали в процессе обучения, когда оглянетесь на этот процесс уже будучи мастером-хэкером.
3. Научитесь использовать World Wide Web и писать на HTML.
Большинство из тех вещей, что созданы хэкерской культурой, делают свое дело невидимо, помогая работать фабрикам, учреждениям и университетам без сколь-нибудь заметного влияния на жизнь не-хэкеров. WWW - это одно большое исключение, гигантская блестящая хэкерская игрушка, которая даже по признанию политиков изменяет мир. Лишь по одной этой причине (а также и множеству других приятных причин) вам следует научиться работать с Web.
Это не означает, что нужно просто научиться управляться с браузером (это любой умеет), но научиться писать на HTML, языке разметки документов Web. Если вы еще не умеете программировать, то писание на HTML обучит ваше мышление некоторым полезным привычкам, которые пригодятся при освоении языков программирования.
Запомнить, что хакером вы станете не тогда, когда взломаете пару прог, форумов в вебе и т.п. Хакером вы станете только тогда, когда вас признают другие хакеры! Есть пять основных типов вещей, которые вы можете делать, чтобы вас уважали хэкеры:
Пишите программы с открытым исходным кодом.
Первое (самое главное и самое традиционное) - это писать программы, которые другие хэкеры считают забавными или полезными, и раздавать исходные коды программ для использования всей хэкерской культурой.
Мы привыкли называть такую работу "свободно-доступным программным обеспечением" (free software), но это привело в замешательство очень многих людей, точно не понимавших, что подразумевалось под словом "свободно-доступное". Теперь для такого программного обеспечения многие из нас предпочитают использовать термин "с открытым исходным кодом" или "open-source software".
Помогайте тестировать и отлаживать программы с открытым исходным кодом
Почитаемы также те, кто тестирует и отлаживает программы с открытым кодом. В этом несовершенном мире мы неизбежно затрачиваем самую большую часть времени разработки программы на фазу отладки. Именно поэтому любой думающий автор программ с открытым кодом скажет вам, что хорошие бета-тестеры (знающие, как внятно описать симптомы, хорошо локализующие проблемы, способные исправлять опечатки и применяющие несколько простых диагностических подпрограмм) ценятся на вес золота. Всего один такой человек может превратить фазу отладки из затянутого изнуряющего кошмара в просто полезную задержку.
Если вы новичок, то попытайтесь найти разрабатываемую программу, которая вам интересна, и станьте хорошим бета-тестером. Существует вполне естественный путь продвижения от помощи в тестировании программ к помощи в их отладке и далее, к помощи в их модификации. Вы многому научитесь таким способом и породите добрую карму в отношениях с людьми, которые помогут вам впоследствии.
Публикуйте полезную информацию.
Еще одна хорошая вещь - отбирать и накапливать полезную и интересную информацию на Web-страницах или документах типа ЧаВО (FAQ или "часто задаваемые вопросы и ответы"), и делать их общедоступными. Ведущие основных технических ЧаВО почти столь же уважаемы, как и авторы программ с открытым исходным кодом.
Помогайте поддерживать работу инфраструктуры.
Хэкерская культура (и инженерная разработка Интернет, к слову сказать) основана на добровольцах. Имеется масса необходимой, но не особо эффектной работы, которую нужно делать, чтобы поддерживать процесс: администрирование рассылочных листов, модерирование новостных групп, управление большими архивами программного обеспечения, разработка RFC и других технических стандартов.
Люди, хорошо делающие такого рода вещи, глубоко уважаемы, поскольку каждый знает, что подобная работа требует кучу времени и не так забавна как игры с кодами. Эта работа свидетельствует о самоотверженности.
Служите самой хэкерской культуре.
Наконец, вы можете служить и распространять саму культуру (например, составляя скрупулезное руководство "как стать хэкером" :-)). Но этим не стоит заниматься до тех пор, пока вы не поваритесь в этом достаточное время и не станете хорошо известны благодаря одной из четырех первых вещей.
В хэкерской культуре нет явных лидеров, но здесь есть "культурные герои", "племенные старейшины", историки и ораторы. Когда вы достаточно долго поживете в этих траншеях, то сможете вырасти в одного из таких людей. Но остерегайтесь: хэкеры настороженно относятся к своим крикливым племенным старейшинам, так что видимое достижение такого рода славы таит в себе опасность. Вместо того, чтобы стремиться к этому, вам лучше как бы не заботиться об этом и тогда это само упадет на колени, а уж затем можно быть скромным и милостивым в своем статусе.
ЗАПОМНИТЕ: хакеры это часть отдельной культуры, которые никак не связаны с теми, кто ломает системы для того что бы нажится на этом. Взлом сети, программы со стороны хакера - это способ самовыражения!
Эрик С. Рэймонд