Основы Python для хакеров, часть 0: Концепции программирования

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
153
Депозит
-8.95$
Добро пожаловать обратно, мои начинающие кибервоины!

Чтобы достичь статуса кибервоина, необходимо обладать базовыми навыками программирования. В сфере хакинга и кибербезопасности это обычно означает написание скриптов на BASH и Python. Скрипты на Python наиболее популярны среди специалистов по кибербезопасности благодаря обширным библиотекам и модулям, полезным для кибербезопасности (вы можете использовать любой язык программирования для кибербезопасности, но если кто-то уже создал колесо, например, на Python, это значительно упростит вам жизнь). Если вы изучите инструменты Kali, вы обнаружите, что более 90% из них написаны на Python. Поэтому я настоятельно рекомендую вам развить хотя бы начальные навыки работы с Python.

nsplsh_efce2bb16ac6430ab3fe6b6507acf294~mv2.jpg

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

Переменные

Переменные — это всего лишь места хранения значений. Переменные позволяют создать место хранения, а затем изменять (вариировать) эти значения во время работы программы, в отличие от статичных значений, которые никогда не меняются.

При написании программы переменные часто необходимо объявить, прежде чем их можно будет использовать. Объявление переменной похоже на простое заявление: «Я хочу, чтобы это было переменной». После этого система резервирует память для значений, которые будут помещены в переменную.

Как правило, переменную можно создать (объявить), придумав имя, состоящее из букв алфавита, цифр и знаков подчёркивания. Имя такой переменной может начинаться с знака подчёркивания или букв, но не с цифры.

Типы переменных включают в себя:

  1. Постоянная переменная – хранит данные, которые не меняются.
  2. Глобальная переменная – эти переменные доступны во всей (глобальной) программе.
  3. Переменная класса – эти переменные доступны только внутри класса (см. раздел ниже об ООП).
  4. Переменная экземпляра – эти переменные доступны внутри класса, но вне метода (см. ООП ниже)
  5. Локальная переменная – эти переменные доступны только внутри класса, метода, экземпляра, где они объявлены (созданы).

Структуры управления

В большинстве программ или скриптов существует поток действий: шаг 1, затем шаг 2… В точках этого потока необходимо принять решение, например, пойти направо или налево. Управляющие структуры — это способ принятия этих решений. Они управляют потоком. Этот поток обычно зависит от значения переменной. Например, если переменная A меньше 10, повернуть направо, если переменная A больше 10, повернуть налево.

Эти структуры управления можно разделить на несколько общих типов:

  1. Последовательная логика – программа выполняется в определенном последовательном порядке.
  2. Логика выбора – эти управляющие структуры содержат условие, определяющее, какой код будет выполнен следующим.
  3. Итерационная логика – группа или блок кода, повторяющийся фиксированное количество раз.

Структуры данных позволяют программам эффективно хранить и извлекать данные. Вот некоторые распространённые структуры данных:

  1. Массивы — массивы хранят похожие элементы вместе, например, упорядоченный список элементов. Они занимают смежные области памяти.
  2. Стеки – это линейные структуры, которые используют порядок выполнения инструкций «последним пришел – первым ушел».
  3. Очереди — это также линейная структура, но для выполнения инструкций используется принцип «первым пришел — первым обслужен».
  4. Связанные списки – это линейная структура данных, которая использует указатели для связывания элементов.
  5. Бинарные деревья — это нелинейная структура, узлы которой имеют два разных значения/направления. Их можно использовать для иерархических данных.
  6. Графы содержат узлы и ребра, соединённые друг с другом. Они часто используются для представления данных в сложных формах, таких как карты и социальные сети.

Объектно-ориентированное программирование​

Прежде чем углубляться в Python, стоит, пожалуй, уделить несколько минут обсуждению концепции объектно-ориентированного программирования (ООП). Python, как и большинство современных языков программирования (C++, Java и Ruby, и это лишь некоторые из них), придерживается модели ООП. На рисунке ниже показана базовая концепция ООП: основным инструментом языка является объект, обладающий свойствами в виде атрибутов и состояний, а также методами, представляющими собой действия, выполняемые объектом или над ним.

Идея языков программирования, основанных на ООП, заключается в создании объектов, которые ведут себя подобно вещам в реальном мире. Например, автомобиль — это объект, обладающий свойствами, такими как колеса, цвет, размер и тип двигателя; у него также есть методы, которые представляют собой действия, выполняемые автомобилем, например, ускорение и запирание дверей. С точки зрения естественного человеческого языка объект — это существительное, свойство — прилагательное, а метод — обычно глагол. Объекты являются членами класса, который, по сути, представляет собой шаблон для создания объектов с общими начальными переменными, свойствами и методами. Например, у нас есть класс под названием «автомобили»; наш автомобиль (BMW) будет членом класса «автомобили». Этот класс также будет включать другие объекты/автомобили, такие как Mercedes и Audi.

6a4a49_3eb9e5bb1686488e982ea8fc5f75ab89~mv2.png

Классы также могут иметь подклассы. Наш класс автомобилей имеет подкласс BMW, и объектом этого подкласса может быть модель 320i. Каждый объект будет иметь свойства (марка, модель, год выпуска и цвет) и методы (запуск, вождение и парковка), как показано на рисунке выше.

В объектно-ориентированных языках объекты наследуют характеристики своего класса, например, BMW 320i унаследует методы запуска, вождения и парковки от класса car. Эти концепции ООП крайне важны для понимания
принципов работы Python и других объектно-ориентированных языков, как вы увидите в скриптах в следующих разделах.

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

Отладка​

Отладка — один из важнейших навыков, необходимых для успешного программирования. Это процесс выявления и устранения ошибок в коде для создания работоспособного скрипта/программы.

В коде существует по крайней мере три (3) типа ошибок:

  1. Синтаксические ошибки
  2. Логические ошибки
  3. Скрытые ошибки
Синтаксическая ошибка

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

Логические ошибки

Логическая ошибка возникает, когда в алгоритме или логике кода присутствует изъян, который либо останавливает выполнение программы, либо приводит к некорректному результату. Логические ошибки возникают только во время выполнения, поскольку в синтаксисе кода ошибок нет. Например, неправильная инициализация переменной может привести к логической ошибке в коде.

Скрытые ошибки

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

Инструменты программирования​

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

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

6a4a49_a0250cfab1614d208eb8642db0714f11~mv2.png

Вы можете использовать IDE для:

  • Написание кода: вы можете использовать IDE для написания и редактирования программного кода для выполнения набора задач.
  • Компиляция кода: IDE компилируют код, переводя понятный человеку код в формат, понятный компьютеру.
  • Отладка кода: IDE помогают обнаруживать ошибки в коде и вносить исправления.
  • Мониторинг ресурсов: вы можете отслеживать различные параметры, такие как дисковое пространство, потребление ресурсов, использование памяти, свободное место на диске и кэш-память, которые помогают оптимизировать ваш код для более быстрой и эффективной работы.
  • Инструменты автоматизации проектирования: некоторые IDE также предоставляют автоматизированные инструменты для задач разработки.
Вам не нужна IDE, чтобы начать писать код, но они, безусловно, могут помочь. Продвинутые IDE, такие как PyCharm, превосходны, но и дороги. Если вы пишете код в среде, где время критически важно, такой инструмент, как PyCharm, может сэкономить вам сотни часов. В противном случае подойдут простые текстовые редакторы, такие как vim, gedit, mousepad и многие другие.

Если вы работаете в Kali Linux, в репозитории Kali есть отличная бесплатная IDE под названием Spyder.

6a4a49_6c4aa17c366f436dab46bdcc38d17a9f~mv2.png

Вы можете загрузить spyder из репозитория Kali с помощью команды:

kali > sudo apt install spyder

Краткое содержание

Теперь, когда у вас есть общее представление о концепциях программирования, следующий шаг — начать писать код! Если вы работаете в сфере кибербезопасности, Python — ваш выбор.
 
выглядит как слитый курс какого-то курса по хакерству
можно поулчить какие-то ресурсы этого добра?
 
это кстати основы вроде же полезны всем
 
Назад
Сверху Снизу