{"id":14285,"url":"\/distributions\/14285\/click?bit=1&hash=346f3dd5dee2d88930b559bfe049bf63f032c3f6597a81b363a99361cc92d37d","title":"\u0421\u0442\u0438\u043f\u0435\u043d\u0434\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f","buttonText":"","imageUuid":""}

Как стать хакером? (пошаговая инструкция)

Сразу хочу предупредить, что это лонгрид. У кого-то уйдет 10 минут, а у кого-то могут уйти и все 30 минут для того чтобы полностью понять, о чем я пишу.

Начинаем! Многие ошибочно полагают, что для того, чтобы стать хакером, достаточно освоить один из языков программирования. Однако это не так. Вы можете отлично знать английский язык и переехать в США, но это не сделает вас миллиардером. Для этого вам придется изучать множество других вещей, а язык является лишь инструментом общения между людьми. То же самое касается компьютеров: язык программирования - это способ общения человека с компьютером. Под компьютерами я имею в виду все устройства (мобильные телефоны, калькуляторы, чайники с подключением к интернету, принтеры, умные автомобили, телевизоры, ПК и т. д.). Сравнивать обычного программиста с хакером - это все равно что сравнивать медсестру с нейрохирургом. Я понимаю, что большинство читателей статьи - новички, которые могут затрудняться в ориентировании в большом объеме информации. Я постараюсь составить для вас список рекомендаций, которые помогут вам начать изучение всего необходимого для того, чтобы стать профессиональным хакером.

Итак, во-первых важно понимать, что нет необходимости сразу же начинать изучать какой-либо язык программирования и пытаться писать код, потому что на первых этапах это не имеет смысла. Сначала стоит обратить внимание на английский язык. Вам нужно начать с его изучения. На английском языке информации в сотни раз больше, чем на русском или любом другом, к тому же эта информация более качественная и актуальная (на русский язык ее переводят только через несколько лет, а иногда и вовсе не переводят). С английским языком вы сможете ускорить свое обучение, так как там больше контента, вы сможете выбрать обучающий материал по своему интересу, найти хорошие блоги и каналы, книги и курсы, так как есть выбор. На русском же языке выбора меньше в десятки раз. Также вы сможете заранее находить полезные знакомства на английском языке, что выгодно тем, что в англоязычных странах всегда больше денег. За одни и те же действия вы получите минимум в 5 раз больше, чем если бы вы делали их в русскоязычной стране, потому что англоязычные люди богаче. Поэтому запомните - английский язык - это основа основ.Далее - математика. Она очень важна. Люди, которые хорошо знают математику, добиваются больших успехов в хакинге, чем те, кто ее не знает. После этого вам нужно будет понять, что такое компьютер, из чего он состоит, для чего нужен каждый из его компонентов, за что отвечает и как компоненты общаются между собой. Изучая это, вы столкнетесь с рядом понятий, которые помогут вам получить хоть какое-то понимание. Начните с самых базовых вещей, таких как организация железа и архитектура ЭВМ (электронно-вычислительных машин, то есть компьютеров).

Попробуйте понять, как процессор может понимать языки программирования и что такое языки программирования в целом. Из этого вытекает ряд концепций, таких как компилятор и интерпретатор, уровни языков программирования и их парадигмы, базовые понятия языков, такие как ветвления, циклы, переменные, лямбда-выражения, рекурсии и т. д. В процессе изучения этих понятий вы будете обнаруживать все новые и новые концепции. Например, системы счисления, различные виды данных, различные типы кодирования. Вам нужно будет хорошо разобраться в теории о том, что такое компьютер и начать понимать, как его можно программировать. Кроме того, сюда можно отнести основы баз данных - вы должны будете понимать концепцию баз данных, знать о существующих типах баз данных, о том, как там хранится информация и все связанные с этим вопросы.После того, как вы будете понимать саму идею программирования, можно перейти к изучению компьютерных сетей. Все работает через интернет и повсюду используются сетевые технологии. Вам нужно будет изучить, как это было придумано и как работает сейчас. Начните с изучения того, что такое интернет и как он работает. Изучая это, вы узнаете о TCP/IP и системе OSI. Проще говоря, это инструменты для общения между компьютерами в любой точке мира. Когда я говорю об общении, я имею в виду не только передачу простых сигналов, но и решение ряда задач на разных уровнях этих моделей. Например, модель TCP/IP делится на несколько уровней, каждый из которых отвечает за определенное действие - например, какая информация будет доставлена из точки A в точку B, как она будет доставлена и более детальные аспекты типа принятия информации.

Следующий важный момент в сетях - это сокеты. Модели протоколов - это некий регламент, а сокеты - это сущности, где этот регламент реализуется. Проще говоря, сокеты - это двери в ваш компьютер извне, через которые вы передаете и получаете данные. Сокеты уже запрограммированы вашей операционной системой, и вам нужно научиться ими пользоваться. Модели протоколов и сокеты - это две базовые составляющие сети, которые тесно связаны. Вам нужно знать и понимать принцип работы протокола HTTP (протокола веб-приложений), а также разбираться в дополнительных уровнях протоколов, таких как SSL, TLS, UDP и т. д. Вам также нужно изучить операционные системы. Сначала разберитесь, что такое операционная система и какие бывают ее виды. Изучите, как операционные системы работают с железом и поймите процесс загрузки вашего компьютера. Затем изучите, как работают операционные системы изнутри, поймите детально их работу, какие есть папки и каталоги, компоненты и файлы и за что они отвечают. Без этого вы не сможете нормально писать системный софт - программы, которые вы захотите запускать в какой-либо операционной системе. Это могут быть как полезные программы, так и вирусы. Особое внимание уделите ОС Linux и общению с shell - программой, которая позволит вам общаться с операционной системой на равных.Далее изучите домены, их уровни и хостинг. Поймите, что такое порт, проброс портов и зачем это нужно делать. Изучите принцип DDoS-атак. Узнайте, зачем нужен фаервол и почему программы просят его отключить.

Если вы изучите основы английского языка, математики, ознакомитесь с сетями и операционными системами, то можете перейти к более практическим вещам - выбору языка программирования. На этой стадии выберите язык, изучите его синтаксис (это не будет сложно, так как вы уже будете знать основы), разберитесь в его идеологии и парадигме. Посмотрите его стандартную библиотеку и попробуйте написать что-то.Языки программирования во многом похожи друг на друга. Изучив один из них, вы сможете быстрее освоить следующий - в 10 раз быстрее. Чем больше языков вы знаете, тем легче будет учить новые. Вам необходимо знать о структурах данных и их назначении, о работе переменных, типах данных, константах и литералах, операторах и операндах, инструкциях по контролю поведения кода, функциях, параметрах функций и способах передачи параметров в них, принципе работы компилятора, лексическом анализе, синтаксическом дереве, парсере, генераторе кода, токене, рекурсии, классах, объектах, наследовании, полиморфизме, композиции и многопоточном программировании. Вам также нужно понимать алгоритмы и абстракцию, знать о существующих типах алгоритмов и их назначении.Далее обратите внимание на системы счисления и хранение данных - двоичные, восьмиричные и шестнадцатиричные системы. Поймите принцип работы булевых операций на уровне железа, узнайте о триггерах и транзисторах, работе памяти и ее организации. Знайте разницу между жестким диском и SSD. Имейте представление о том, как данные представляются в виде двоичного кода - изображения, видео, звук и текст. Кодирование этих данных разное и это нужно понимать. Знайте, как хранятся числа в памяти - целые и с плавающей точкой. Понимайте сжатие данных и разницу между сжатием изображений, видео и аудио.Далее изучите манипуляцию данными на уровне железа - основы компьютерной архитектуры, работу процессора и его взаимодействие с другими частями системы. Понимайте принцип исполнения программ на уровне железа - что такое пайплайн и конвейер, многопроцессорная архитектура и машинный язык. Знайте логические операции и операции побитовых сдвигов.

Вам нужно знать, как реализована и работает коммуникация с другими устройствами в системе - коммуникация памяти, процессоров, контроллеров и устройств, подключенных к ним, таких как модем, монитор, жесткий диск, джойстик и т. д. Понимайте, что такое контроллер и его назначение. Изучите коммуникационные скорости - биты, байты, килобайты и разницу между килобайтом и килобитом. Изучите архитектуру операционной системы, ее компоненты и их взаимодействие. Понимайте, что такое шелл, файловый менеджер, менеджер устройств и менеджер памяти. Знайте о виртуальной памяти и пейджинге, процессе запуска операционной системы и разнице между user mode и kernel mode. Понимайте концепцию процесса и разницу между программой и процессом. Изучите многопоточность и прерывания - шаги, которые выполняет процессор во время прерывания.В контексте программирования вам нужно выучить сортировки, поиски, сжатия, нахождение кратчайших путей и работу с различными структурами данных - графами, деревьями и т. д. Изучите Фибоначчи и динамическое программирование.Вам также нужно иметь представление о тестировании и понимать его назначение. Продумывайте архитектуру перед написанием софта, ставьте требования перед написанием софта, чтобы не придумывать их на ходу. Знайте о UML-диаграммах и их использовании. Этот список можно продолжить, но после изучения всего этого вы сами поймете, куда двигаться дальше. Понимайте, что написание любого софта - это наука, как создание самолетов. Вам нужно знать об арифметике указателей, умных указателях и побитовых сдвигах. Знайте о прямом и обратном коде, big-endian и его назначении.

Вам нужно понимать, как данные хранятся в памяти. Если ваш компилятор выделил 32 бита под double, то вам нужно знать, какой бит отвечает за знак, какие - за числа после запятой и т. д. Понимайте, как в компьютере расположены биты - справа налево или слева направо. Знайте разницу между хранением int и double. Понимайте, что такое стек, где он расположен и как работает. Умейте управлять стеком. С пониманием всего этого вам будет легче понять, как в прямой последовательности битов может храниться бинарное дерево или граф.Далее остается только практиковаться в написании кода. Параллельно с этим изучите типы вирусов и их назначение, работу антивирусов и способы обхода их защиты. Понимайте анонимность и безопасность, работу сети TOR, VPN, proxy, дедиков, MAC-адресов, идентификаторов операционной системы и браузерных отпечатков. Изучите криптовалюты и их работу, механизмы *****ания и анонимизации финансов. Изучите психологию для мастерского владения социальной инженерией. Изучите радиосвязь, IP-телефонию и сотовые вышки. Изучите криптографию и шифрование.Конечно же, это не все, что вам нужно изучить - я перечислила лишь 20-30% того, с чего стоит начать свой путь в мир хакинга и указатели на то, куда двигаться. Постепенно, шаг за шагом, этот путь будет открываться перед вами.

Надеюсь вам понравилась статья!)

Так же, у меня есть свой телеграмм-канал, где я каждый день стараюсь публиковать 1-2 важные и интересные новости из мира криптовалют. Я верю, что за криптой будущее! Если хотите вместе со мной быть "на волне", подпишитесь)

0
2 комментария
Кирилл Артюхов

я у мамы анонимус)) вообще это ж как бойцовский клуб получается

Ответить
Развернуть ветку
Леонид Леонидов
Автор

а жизнь это игра)))

Ответить
Развернуть ветку
-1 комментариев
Раскрывать всегда