Хакерский язык программирования. Фундаментальные основы хакерства. Проверка аутентичности и базовый взлом защиты Какие языки должен знать хакер

Вряд ли вы 20 лет сидели спокойно в своей комнате, хорошо учились, во всём слушались родителей, никогда никого не обманывали, в жизни своей ничего чужого не брали, а потом, бац, и захотелось стать кибервзломщиком. Скорее всего в вас уже это живёт: вас легко увлечь поиском оригинального решения, вы впитываете компьютерные знания словно губка, терпеть не можете руководства, доверяете лишь собственному методу проб и ошибок, а профессиональная литература лишь один из помощников. И вот сейчас в вашей голове начало прорастать зерно истины, желание встать по ту сторону закона. Не денег ради, исключительно из любопытства. С чего начать?

Выучить язык

Раз вы решили стать хакером, то наверняка вы в совершенстве знаете английский язык. Если же нет, то любая ваша дальнейшая задача усложняется вдвое — сперва со словарём будете искать, что именно вы взламываете, а лишь потом искать пути — опять со словарём. Кроме того, если карьера пойдёт в гору, то неплохо знать базовую часть некоторых других языков — испанского, немецкого, французского. И в жизни пригодится, и в работе не помешает. Разработчики тоже иногда попадаются несведущие.

Выбрать специализацию

Как и в любом другом увлечении, важно в кратчайшие сроки определиться со специализацией. Нет, безусловно сперва надо начать с изучения оболочки прикладного железа — приложений и операционных систем, потом переходить на более масштабный уровень. Главное помнить, что видов атак и приёмов взлома десятки: на освоение всего на приличном уровне уйдут годы. Потому если вы амбициозны и хотите не просто попробовать, а добиться серьёзных успехов — определяйтесь с областью работ и развивайте навыки в этом направлении. При должном упорстве уже через полгода на вашем счету будет первый существенный скальп.

Прочитать литературу

Несмотря на то, что хороший хакер отличается тем, что все свои знания получает эмпирическим путем, было бы глупо пытаться превзойти многолетние наработки в области безопасности, не используя чужой опыт. Вот с чего следует начать свой литературный экскурс: «Искусство обмана» , «Hacking: the Art of Exploitation» , «The Basics of Hacking and Penetration Testing: Ethical Hacking and Penetration Testing» , «Metasploit: The Penetration Tester"s Guide» . После их освоения у вас, как минимум, больше не возникнет глупых вопросов из разряда «куда идти» и «что делать».

Никого не слушать

Вся суть деятельности хакера заключается скорее в исследовательской деятельности, нежели вредительской. Поэтому если у вас есть своя голова на плечах, никогда не воспринимайте чужую критику всерьёз, не верьте в существование «правильного» пути и не поддавайтесь на провокации. Если уж хакерам не заниматься тем, что нравится, то кому тогда?

Соблюдать ритм

Как бы лихо вас не затянуло новое увлечение, не спешите лезть в серьёзные проекты. Постепенно изучайте выбранное дело, учитесь не только разрушать, но и создавать. И уж конечно постарайтесь сразу убить в себе желание взломать что-нибудь большое и известное. Это чревато не только возможностью уткнуться в непреодолимую стену, но и получением вполне реального срока.

Бросать вызовы

Вместе с тем не спешите почивать на лаврах первых успехов. В то время, как люди по ту сторону работают над созданием всё более и более идеальной защиты, ваша задача идти в ногу со временем и искать в ней изъяны и закономерности. Никто не призывает сразу срывать куш на конкурсе Pwnium , но всерьёз задуматься о подобном, а главное стремиться к этому необходимо.

Найти подходящую работу

Чтобы поймать преступника, надо мыслить, как он. Чтобы обойти построенную защиту, надо попасть в коллектив, который её создаёт. Это здорово поможет ускорить профессиональный рост, отчасти монетизировать своё увлечение, да и вообще возможно заставит задуматься о правильности выбранной стороны.

Впрочем, есть и альтернативный универсальный вариант — просто смените род деятельности. С одной стороны, так вы будете подходить к любимому делу с большим энтузиазмом и свежей головой, с другой — не выпадете из социума. Ведь даже у самых злостных хакеров должна быть личная жизнь.

Перестать бояться

Да и вообще, достаточно потратить хотя бы 10 секунд в любом поисковике, чтобы осознать — в мире существует огромное количество способов (конкурсы, соревнования, работа), позволяющих хорошенько размять мозг и при этом заработать. Сегодня защита информации, в буквальном смысле, международная проблема, связанная, в том числе, с главной угрозой человечества — терроризмом. Поэтому если ваш пытливый ум желает, а главное может что-нибудь взломать, но критически боится получить за это наказание, огромное количество IT-компаний будут готовы с вами посотрудничать.

А как же совет Спольски учить по 1 языку в год для развития кругозора?:)

Михаил Фленов

Не знаю такого совета и не советую. Кругозор от этого становется лучше, но не качественнее. Когда знаете 3-4 языка, лучше учите по одному новому алгоритму для развития кругозора. Даже если вы этот алгоритм никогда не будете использовать.

Игорь

Вопрос из серии "Что сделать чтобы стать хакером"
Чтобы быть хакер надо:
1. Выучить ассемблер. Другие языки не нужны,главное знать ассемблер.
2. Надеть свитер и отрастить бороду. Не важно что ты девушка.
3. Поставить Linux. Не важно зачем. У каждого хакера должен стоять Linux.
В принципе список можно продолжать до бесконечности. Хакер прежде всего специалист,а не копия штампов из фильмов и газет. Добейся успеха в одной области и будет тебе счастье:).

Zhenya

Мне кажется алгоритмы надо понимать,а не заучивать. А что касается языка, то можно в год прочитывать какую-нибудь книжку по 1 языку,просто,чтобы иметь представление о его возможностях. А потом, при необходимости, им воспользоваться

Sergey

Есть языки на которых можно написать "все, что мне нужно", как выразился Михаил. А есть языки на которых можно написать все что угодно в принципе. Ко второму типу, думаю относяться ассемблер, с и с++. Остальные либо для узко специальных задач (php и пр.), либо уступают им в скорости (c#, java и пр.). Что выбрать каждый решает сам, в силу своих задач. Ознакомиться же с математическими принципами программирования следует каждому - это основы.

klamm

Вот вот, а как же Python)

По моему он не такой уж хакерский, он очень прост по синтаксису, проще чем C#. Если взять что языки C# и Java - языки высокого уровня, то Python - язык сверх-высокого уровня, так как он чисто для прикладного приограммирования, при написании программ на нём, главное уметь пользоваться библиотеками.

А всё, что не возможно написать на Python, пишется на С и вызывается из Python проги.

klamm

Насчет того, как стать хакером,

catb . org / ~esr / faqs / hacker-howto . html

alex

Хакер (от англ. hack - разрубать) - чрезвычайно квалифицированный ИТ-специалист, человек, который понимает самые глубины работы компьютерных систем.
В последнее время понятие хакер нивелировали практически до понятие продвинутого пользователя. По-моему понятию хакер человек в совершенстве знающий ассемблер и с, и способный написать если не операционную систему, то алгоритмический язык, чем и с переменным успехом занимались во время учебы в институте. Просто смешно звучит хакер, знающий только php, или html.

Ник

2alex, думаю если ты будешь знать пхп, действительно знать пхп, то в добавок и js как-то изучится, не говоря уже о понимании как ломать-обходить защиту сайтов...

Ancort

асм, с++ и лисп (как-то забыли) - вот "хакерские" языки, имхо

Владимир

Мне тоже как-то C# больше нравится, в стиле ооп как-то код воспринимается проще, что ли

Руслан Даутхаджиев

Опять споры, какой язык круче?? Вечный спор на эту тему. По поводу Питона - чисто скриптовый язык для мобильных платформ и web. Поддерживает сторонние конструкторы для создания GUI, например, QT. Особой крутизны этого языка не вижу. Программировать прекрасно можно хоть на QBasic -все зависит от фантазии и опыта программиста. Если язык устарел, это еще не значит, что он "мертв".

Руслан Даутхаджиев

Alex, нынче программистами называют людей, умеющих просто работать в MS Word:). Что вы хотите? Чтобы человек сразу родился с возможностью написать свою ОС? Все начинают с малого. Все зависит от желания человека обучаться и познавать что-то новое.

А то что, вы "Хакер" и в вузе писали свой язык мы уже поняли. Спасибо..

Программирование — это основной инструмент хакера. Если вы ещё не знаете никакого компьютерного языка, то я рекомендую начать с Python"а. Он понятно разработан, основательно документирован и относительно добр к новичкам. Несмотря на своё доброе отношение к новичкам — это не просто игрушка, а очень мощный и гибкий язык, который превосходно подходит для больших проектов. Я уже писал более подробную оценку Python"у . Есть прекрасное руководство для начинающих и официальный учебник на сайте Python"а, также можно найти превосходные руководства в других местах, одно из них Computer Science Circles .

Раньше я рекомендовал Java, как язык для раннего изучения, но, учитывая эту критику, изменил своё мнения (поищите также: “The Pitfalls of Java as a First Programming Language” (“Заблуждения о Java, как о первом языке программирования”)). Хакер не может подходить к решению проблемы, как решает её сантехник в магазине, он должен знать, что конкретно делает каждый компонент. Поэтому, сейчас я сколоняюсь, что в начале лучше будет изучить языки C и Lisp, и уже после них Java.

Сущестует, пожалуй, более общий подход к этому. Когда для создания чего-либо есть хороший инструмент, а язык для этого слишком много и изучение его вызывает трудности. Не только языки программирования могут справится с задачей, но и различные веб фреймворки, такие как RubyOnRails, CakePHP, Django могут решить задачу легко, но оставят вас с поверхностными знаниями и вы не сможете решить более сложную задачу или разобраться в проблеме, если это быстрое и лёгкое решение будет работать неправильно.

Если вы решили погрузиться в серьёзное программирование, то вы должны выучить сердцевину ОС Unix — язык C (произносится Си ). C++ (произносится Си Плас Плас )очень тесно связан с C, если вы знаете один, то изучить другой будет не трудно. Хотя они не являются языками для начинающих. И, на самом деле, чем больше вы избегаете программирования на C, тем более продуктивны будете вы.

C очень эффективный и очень бережливый относительно затрат машинных ресурсов. Тем не менее, использование языка C будет эффективным там, где требудется управление вручную низкоуровневыми ресурсами, например, памятью. Весь этот низкоуровневый код сложен и в нём легко ошибиться, а также требует огромного количества вашего времени на отладку (поиск и устранение ошибок). Принимая во внимание мощности современных компьютеров, можно принять компромисное решение — умнее поступить это выбрать язык, который менее эффективно использует ресурсы компьютера, но более эффективен к затраченному времени на реализацию. Этот компромис — Python.

Другие языки первостепенной важности для хакеров - это Perl и LISP . Язык Perl имеет смысл выучить из практических соображений: он очень широко используется для активных web-страниц и системного администрирования, так что даже если вам никогда не придётся писать на Perl, вы должны научиться его читать. Многи люди используют Perl в этом качестве, а я советую вам использовать Python и избегать программирования на Си, если задача не требует экономного использования ресурсов машины. Вам необходимо понимать такой код.

LISP ценен для изучения по другой причине - вы приобретёте глубокие знания узнав этот язык до конца. Эти познания сделают вас прекрасным программистом на всю оставшуюся жизнь, даже если вы никогда особо и не будете использовать сам LISP. (Первоначальные навыки программирования на LISP можно достаточно легко получить, создавая и модифицируя расширения текстового редактора Emacs или создавая плагины на Script-Fu для GIMP).

На самом деле, лучше выучить все пять: Python, C/C++, Java, Perl, и LISP. Помимо того, что это самые важные хакерские языки, они демонстрируют очень разные подходы к программированию и каждый из них научит ценным подходам.

Но имейте в виду, что вы не достигнете уровня хакера или даже обычного программиста, просто коллекционируя языки — вы должны научиться думать о том как запрограммировать в общем виде, не зависимо от какого-либо языка. Чтобы стать настоящим хакером, вы должны дойти до такого уровня знаний, когда способны изучить новый язык в считанные дни, просто заглядывая в руководство по этому языку и связывая это с уже имеющимися знаниями. А чтобы стать таким — нужно знать несколько очень разных по своей сущности языков.

Я не могу дать здесь полные инструкции как научиться программированию - это сложное искусство. Но я могу сказать вам, что книги и курсы этого тоже не сделают - многие, возможно большинство лучших хакеров самоучки. Вы можете научиться функциональным возможностям языков (малая часть знаний) из книг, но тип мышления, который делает эти знания применимы к жизни, может быть получен только на практике и через определённый период обучения. Что на самом деле может научить программированию, так это (а) чтение исходного кода и (б) написание исходного кода .

Питер Норвиг (Peter Norvig) один из ведущих хакеров Google и соавтор популярного учебника по ИИ (Искусственному Интеллекту), написал замечательную статью под названием Teach Yourself Programming in Ten Years (Научи себя программировать за десять лет). На его "рецепт успешного программирования" стоит обратить особенное внимание.

Научиться программировать - это как научиться писать хорошим естественным языком. Самый лучший способ для этого - почитать что-то из написанного признанными мастерами литературы, затем написать немного самому; прочесть побольше, написать немного побольше; прочитать ещё больше - написать ещё больше... И повторять так пока ваши программы не станут похожими на мощную и организованную модель.

Больше об этом процессе я рассказал в How To Learn Hacking (Как научиться хакингу). Это простой набор инструкций, который выполнить очень не легко.

Отыскать хорошие исходные тексты для изучения раньше было сложно, потому что было очень мало больших программ, доступных в исходных текстах и пригодных для изучения и экспериментов юным хакерам. Теперь ситуация кардинально изменилась: программы в исходных текстах, средства разработки и целые операционные системы (всё это создано хакерами) теперь широко доступны. Что подводит меня прямо к следующему разделу...

Только думаешь приобщиться к кодингу? Теряешься в многообразии языков и технологий? Радуйся, настал твой день: мы немного поднапряглись и всей редакцией выкатили для тебя интерактивный гайд по выбору языка программирования в зависимости от твоих потребностей. Неважно, хочешь ли ты писать мобильные игры, искать бэкдоры в прошивках ZTE или просто зарабатывать кодингом на жизнь, - мы предусмотрели все варианты. Крути схему, отвечай на вопросы, выбирай свою технологию... И не забудь потом перечислить нам процент с первой зарплаты. Так сказать, за наводку!

Независимо о того, какое направление тебе больше по душе - если у тебя совсем нет опыта программирования, начать придется с самых основ. Изучить термины, научиться составлять алгоритмы и превращать их в код. А поможет тебе в этом - онлайновой площадке, которая предназначена для обучения программированию.

Состоит из четырех занятий и длится две недели. За это время ты изучишь самые основы программирования, напишешь свою первую программу, а также узнаешь, какие бывают языки и на чем может специализироваться программист. А для закрепления тебя снабдят необходимыми материалами: у тебя останутся видеозаписи уроков и методички. Да что там, ты даже получишь сертификат о пройденном занятии, если вдруг захочется перед кем-то похвастаться!

Если же освоение основ позади, то на ты можешь выбрать одну из профессий и пройти полноценное обучение из нескольких курсов.

Веб-разработчик

https://geekbrains.ru/professions/web_developer

Легко ли быть веб-разработчиком? Может показаться, что не очень сложно - ведь веб-сайт может сделать кто угодно. Однако чтобы стать настоящим фулстек-девелопером, сегодня нужно знать гораздо больше, чем HTML и какой-нибудь серверный язык. За десять месяцев этот набор курсов Geekbrains проведет тебя от освоения HTML и CSS к изучению PHP - с самого начального уровня и до профессиональной веб-разработки с применением фреймворка YII2. Поимо этого, сюда входят курсы по изучению Javascript - как клиентского, так и серверного (Node.js), а также фреймворков Angular и D3.js.

Мобильный разработчик

https://geekbrains.ru/professions/mobile_developer

Хочешь делать мобильные приложения для iOS и Android? Этот набор курсов спроектирован специально для таких, как ты и длится 11 месяцев. В него входит два курса по Java (от основ до продвинутого ООП, работы с сетью и многопоточностью) и два курса по Android (разработка интерфейса, работа с графикой и сенсорами и так далее). Вторая половина курсов посвящена Objective-C - этот язык необходим тем, кто планирует делать приложения для iOS. К нему добавлен и курс по Swift - новому языку Apple, который уже начинает использоваться в разработке софта.

Программист на Java

https://geekbrains.ru/professions/java_developer

Создатели языка Java думали, что он так хорош, что будет применяться повсеместно. Этого не случилось: в итоге Java используется на Android и в серьезной серверной разработке - на этом языке пишут бекенды высоконагруженных приложений и многопользовательских игр. Отсюда вывод: программистам на Java всё же очень неплохо живется! Стать одним из них поможет этот шестимесячный набор курсов Geekbrains. Два курса по Java в нем совпадают с планом занятий разработчиков софта для Android, но именно третий курс поможет стать настоящим гуру Java. Он посвящен базам данных, построению графических интерфейсов, а также сложным вещам вроде многопоточности, механизма отражений и внутренним классам.

Программист на Python

https://geekbrains.ru/professions/python_developer

Говорят, что на Python можно начать программировать без всякого обучения, но при этом умалчивается пара важных деталей: толком это получится только у того, кто уже знает пару языков, да и профессионалом так не станешь. Пятимесячный курс Geekbrains включает не только изучение Python от основ до тонкостей вроде декораторов, но затрагивает ещё и HTML/CSS, Javascript и фреймворк Django. Так что ты научишься не просто писать программы на Python, но сможешь делать на нем полноценные динамические сайты.

Программист на Ruby

https://geekbrains.ru/professions/ruby_developer

Язык Ruby долго считался интересной диковинкой, пока не появился фреймворк Ruby on Rails. Теперь Ruby - один из лучших языков для веб-разработки, а благодаря Rails он помогает многократно ускорить и упростить разработку сложных веб-приложений. Этот полугодовой курс Geekbrains научит тебя обращаться с HTML/CSS и клиентским Javascript, а также обучит Ruby именно с целью использования Rails. Контроллеры и шаблонизаторы ждут тебя, будущий веб-разработчик!

Спецпроект с компанией GeekBrains

Первыми хакерами можно считать ту небольшую группу людей, состоящую из опытных программистов и сетевых чародеев, которые несколько десятилетий назад стояли у истоков создания ранних микрокомпьютеров и участвовали в экспериментах ARPAnet. Взлом компьютеров и телефонных сетей стал признаком хакерской культуры, которая на самом деле куда более сложная и не ограничивается только взломами. Как приобщиться к этому сообществу, приобрести необходимые навыки, научиться мыслить как хакер и заслужить уважение и репутацию в этой среде, вы узнаете из этой статьи.

Шаги

Часть 1

Приобретение базовых навыков

    Перейдите на операционную систему, подобную Unix, например на Linux . Unix - популярная операционная система, часто используемая для серверов и давшая толчок развитию интернета. Хотя можно пользоваться интернетом и не зная Unix, но нельзя быть интернет-хакером, не понимая Unix. По этой самой причине сегодняшняя хакерская культура является весьма сильно Unix-сконцентрированной. Unix, подобно Linux, можно использовать наряду с Windows на одном компьютере. Скачайте Linux или попросите кого-нибудь из пользователей Linux помочь вам с установкой системы.

    Помогайте тестировать и отлаживать программы с открытым исходным кодом. Почитаемы также те, кто тестирует и отлаживает программы с открытым исходным кодом. В этом несовершенном мире мы неизбежно затрачиваем самую бо́льшую часть времени разработки программы на фазу отладки. Именно поэтому любой думающий автор программ с открытым кодом скажет вам, что хорошие бета-тестеры (знающие, как внятно описать симптомы, хорошо локализующие проблемы, способные исправлять опечатки и применяющие несколько простых диагностических подпрограмм) ценятся на вес золота.

    • Если вы новичок, то попытайтесь найти разрабатываемую программу, которая вам интересна, и станьте хорошим бета-тестером. Существует вполне естественный путь продвижения от помощи в тестировании программ к помощи в их отладке и далее к помощи их модификации. Вы многому научитесь таким способом и породите добрую карму в отношениях с людьми, которые помогут вам впоследствии.
  1. Публикуйте полезную информацию. Еще одна хорошая вещь - отбирать и накапливать полезную и интересную информацию на веб-страницах или документов типа ЧаВО (FAQ или «часто задаваемые вопросы и ответы») и делать их общедоступными. Ведущие основных технических ЧаВО почти столь же уважаемы, как и авторы программ с открытым исходом кодом.

    Помогайте поддерживать работу инфраструктуры. Хакерская культура (и инженерная разработка интернета) основана на добровольцах. Имеется масса необходимой, но не особо эффективной работы, которую нужно делать, чтобы поддерживать процесс: администрирование рассылочных листов, модерация новостных групп, управление большими архивами программного обеспечения, разработка RFC и других технических стандартов. Люди, хорошо делающие такого рода вещи, глубоко уважаемы, поскольку каждый знает, что подобная работа требует кучу времени и не так забавна как игры с кодами. Это работа свидетельствует о самоотверженности.

  2. Служите самой хакерской культуре. Наконец, вы можете служить и распространять саму культуру. Но этим не стоит заниматься до тех пор, пока вы не поваритесь в этом достаточное время и не станете хорошо известны благодаря одной из четырех первых вещей. В хакерской культуре нет явных лидеров, но здесь есть «культурные герои», «племенные старейшины», историки и ораторы. Когда вы достаточно долго поживете в этих траншеях, то сможете вырасти в одного их таких людей.

    • Но остерегайтесь: хакеры настороженно относятся к своим крикливым племенным старейшинам, так что видимое достижение такого рода славы таит в себе опасность. Вместо того, чтобы стремиться к этому, вам лучше как бы не заботиться об этом и тогда все придет само, а уж затем можно стать скромным и милостивым в своем статусе.
  • Некоторые компании нанимают хакеров, чтобы те проверяли, насколько безопасна их система. Так что на этом можно неплохо заработать!
  • Старайтесь не попасться и не занимайтесь взломом.
  • Хорошо пишите на родном языке. Согласно распространенному стереотипу, программисты не очень грамотные, но на самом деле многие хакеры - очень даже хорошо владеют языком.
  • Lisp стоит выучить ради тех глубоких просвещенных познаний, которые вы обретете, когда наконец его освоите. Эти познания сделают вас прекрасным программистом на всю оставшуюся жизнь, даже если вы никогда особо и не будете использовать сам Lisp. Вы можете получить начальный опыт работы с Lisp в режиме редактирования кода текстового редактора Emacs или плагина Script-Fu для графического редактора GIMP .
  • Язык Perl имеет смысл выучить из практических соображений: он очень широко используется для активных web-страниц и системного администрирования, так что даже если вам и никогда не придется писать на Perl, вам следует научиться его читать. Многие люди используют Perl, чтобы избежать программирования на Си, который требователен к ресурсам компьютера.
  • Тестируйте свои знания на созданных вами веб-сайтах.
  • Используйте свои знания и навыки во благо. Хорошим хакером быть куда безопаснее и выгоднее для всех, чем плохим. Плохим хакера живется не очень-то хорошо - им приходится скрываться, дабы избежать проблем с законом.
  • Всегда будьте осторожны. Незаконная деятельность может привести к очень серьезным последствиям, к тому же в интернете на самом деле нет ничего действительно анонимного.
  • Не вовлекайтесь в то, что может привести к неприятностям.
  • Поспрашивайте у сотрудников местных компаний, не нуждаются ли они в проверке систем безопасности.

Предупреждения

  • Взлом - это противоправное действие, которое может привести к серьезному наказанию. Взлом является преступлением и карается по закону.



Top