• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
2024/2025

Программирование на Python

Статус: Маго-лего
Когда читается: 2, 3 модуль
Охват аудитории: для своего кампуса
Язык: русский
Кредиты: 6

Программа дисциплины

Аннотация

В рамках дисциплины студенты научатся описывать алгоритмы для решения задач и работы с данными. Разберут, как улучшить и упростить программу с помощью модулей, итераторов, декораторов. Изучат технологии для тестирования кода, разбора текста и веб-страниц. По завершению дисциплины студенты будут обладать теоретическими знаниями и профессиональными компетенциями программирования на языке Python, такими как работа с файлами, работа с внешними API: работа с разными форматами данных, работа с библиотекой requests, http-запросы, работа с классами на примере API VK. GIT — система контроля версий: внедрение системы контроля версий; история работы и ветки; командная работа. Профессиональная работа с Python: модули, пакеты, импорты в Python, итераторы, генераторы, декораторы. Применение Python на практике: разработка тестов, регулярные выражения, веб-скрапинг
Цель освоения дисциплины

Цель освоения дисциплины

  • Получение навыка программирования для автоматизации процессов защиты систем
Планируемые результаты обучения

Планируемые результаты обучения

  • Умеет писать код, используя условные конструкции; выполнять операции сравнения
  • Умеет различные объекты записывать в файл Python и читать их обратно, умеет объединять аналитические данные из разных систем в одну структуру
  • Знает в каких случаях эффективнее применять функции, а в каких классы. С какими проблемами можно столкнуться при применении функции и как применение классов может решить проблемы
  • Умеет объявить класс в Python
  • Знает, что такое регулярные выражения и чем они отличаются от простого поиска
  • Знает синтаксис регулярных выражений
  • Знает модуль re в Python
  • Умеет использовать регулярные выражения на практике
  • Знает существующие системы контроля версий, архитектуру работы git и svn, понятие CI/CD
  • Умеет создавать git репозиторий, создавать ветки в локальном и удаленном репозитории, выкладывать свои изменения в удаленный репозиторий, разрешать конфликты при работе с Git-репозитори
  • Умеет настраивать базовые CI/CD пайплайны
  • Знает как отправлять HTTP-запросы с помощью Python, используя соответствующие библиотеки
  • Умеет отправлять HTTP-запросы с помощью Python, использует библиотеку requests
  • Знает типы API, как работать с различными форматами данных (формат JSON), библиотеки для работы с API
  • Умеет использовать Python для работы с API и автоматизировать задач
  • Знает инструменты для сканирования уязвимостей, библиотеки для обработки данных
  • Умеет писать скрипты для автоматического сканирования и анализа уязвимостей
  • Знает базовые понятия языка Python, его преимущества, принципы работы в Jupyter Notebook.
  • Знает почему обязательно нужно писать комментарии в коде и в чём особенности простых арифметических операций в Python 3.
  • Познакомился с переменными и знает как их называть.
  • Знает применение переменных, условных конструкций и логических операторов, написание кода.
  • Умеет реализовывать поставленные задачи, используя типы данных и циклы; создавать собственные функции и умеет работать со встроенными.
  • Знает типичные проблемы со временем, ведущие к ошибкам при обработке и интерпретации данных.
  • Знает, как работать с ошибками в Python: чтение ошибок, обработка информации, как запрашивать помощь при работе с ошибками.
  • Умеет работать с датами в Datetime: знает как из строк получать полноценный объект даты и времени, как импортировать библиотеку, как заполнять datetime, как сравнивать, вычитать и прибавлять даты.
  • Знает формат Unixtime как альтернативой Datetime.
  • Знает специализированные инструменты, позволяющие расследовать инциденты, восстанавливать данные, устранять угрозы и обеспечивать безопасное функционирование систем и сетей.
  • Умеет писать скрипты для автоматического восстановления данных, устранения угроз безопасности.
  • Знает специализированные инструменты и библиотеки автоматизации для управления настройками СЗИ и SIEM- систем.
  • Умеет разрабатывать сценарии автоматизации для управления настройками безопасности сети и систем (контроль изменений конфигураций и обработку логов с использованием Python-скриптов и библиотек).
  • Умеет создавать git репозиторий, создавать ветки в локальном и удаленном репозитории, выкладывать свои изменения в удаленный репозиторий, разрешать конфликты при работе с Git-репозиторием.
  • Умеет создавать HTTP-запросы на Python.
  • Умеет создавать простой GET-запрос и POST-запрос на Python.
  • Умеет устанавливать библиотеки для работы Requests, Beautiful Soup, Scapy.
  • Умеет создавать и отправлять собственные пакеты с помощью Scapy.
  • Знает типы API, как работать с различными форматами данных, библиотеки для работы с API.
  • Умеет выполнять предварительную обработку данных с помощью библиотеки pandas (применять функции для dataframe).
  • Умеет фильтровать данные и применять различные способы индексирования (вебинар).
  • Владеет навыками использования некоторых простых функций библиотек для визуализации данных.
  • Владеет навыками использования некоторых простых функций библиотек для статистического анализа данных и применять их к задачам ИБ.
  • Знает понятие, классификацию, характеристики и принципы разработки эксплойтов.
  • Знает инструменты для автоматизации задач, связанных с разработкой и тестированием эксплойтов (включая инструменты для поиска уязвимостей).
  • Умеет использовать requests и BeautifulSoup для для обнаружения уязвимостей (в частности, обнаружение SQL-инъекции, парсинг HTML-страниц, извлечение определенных элементов и атрибутов).
  • Умеет использовать некоторые возможности инструментов PyCrypto и PyCryptodom.
  • Умеет использовать некоторые возможности библиотеки Pexpect, в том числе для автоматизации входа в систему.
  • Умеет загружать датасет botsv1 и подготовить его к работе.
  • Умеет работать с датасетом botsv1 с использованием библиотеки Pandas и оптимизировать работу датасета при большом объеме данных.
  • Умеет работь с данными Windows Security Log с помощью Pandas.
  • Умеет выполнять поиск подозрительных событий автоматически.
  • Умеет выявлять подозрительные домены.
  • Умеет загружать и нормализуем данные JSON в объект Pandas.
  • Умеет анализировать данные логов Nessus и Suricata.
  • Умеет устанавливать фреймворк Volatility и выполнять простых операций с дампом памяти с помощью плагинов Volatility.
  • Умеет анализировать дампа сетевого трафика с помощью PyShark и искать подозрительные артефакты.
  • Умеет анализировать файл и выполнять первичную деобфускацию.
  • Владеет навыками разработки инструмента на Python, который анализирует файлы на наличие вирусов и других киберугроз, используя API VirusTotal и базы данных Vulners.
  • Знает возможности взаимодействия с СЗИ и Python.
  • Умеет работать с документацией и применять доступные API методы
  • Умеет выполнять интеграцияю с VirusTotal через API для улучшения стратегии защиты от злоумышленников и предотвращения инцидентов.
  • Владеет навыками использования API и скриптов на Python для автоматизации типовых задач безопасности.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • 1. Введение в программирование
  • 2. Управляющие конструкции и коллекции
  • 3. Функции и области видимости
  • 4. Работа с файлами и пакетами
  • 5. Время и даты в Python
  • 6. Классы и объекты (ООП)
  • 7. Регулярные выражения и основы синтаксического разбора
  • 8. GIT - система контроля версий
  • 9. Взаимодействие в WWW
  • 10. Python для аналитиков ИБ: API и анализ данных
  • 11. Python для аналитиков ИБ: эксплойты
  • 12. Python для аналитиков ИБ: поиск негативных событий
  • 13. Python для аналитиков ИБ: форензика
  • 14. Управление системами и ресурсами защиты информации с помощью Python
Элементы контроля

Элементы контроля

  • неблокирующий Домашние задания с самопроверкой (темы 2,4,5,7,8,9,10)
  • неблокирующий Итоговый тест по 2-му модулю
    Процедура сдачи итогового теста по 2-му модулю: Студенты выполняют тест в лмс. Тест содержит 20 вопросов. При ответе на вопрос необходимо выбрать один ответ или несколько правильных ответов. В этом случае в тексте вопроса будет дано особое указание. Время выполнения теста – 30 минут. Студент может пройти тест 1 раз.
  • неблокирующий Домашние задания с проверкой преподавателем (темы 3,6)
    Процедура сдачи домашних заданий с проверкой преподавателем: 1. Перед выполнением задания студент устанавливает jupyter notebook либо использует google colab 2. Студент прикрепляет ссылку на выполненное задание в Google Colab или GitHub (если использовали Jupyter Notebook). По ссылке есть доступ. 3. Преподаватель в лмс оставляет обратную связь на выполненную работу.
  • неблокирующий Итоговая работа по 3-му модулю
    Итоговый экзамен по дисциплине проводится в форме выполнения итоговой работы по в 3-ем модуле дисциплины. Студентам предлагается выполнить задание, которое может включать написание скриптов для автоматического сканирования и анализа уязвимостей, написание скриптов для автоматического восстановления данных, устранения угроз безопасности, автоматический поиск негативных событий, автоматизацию управления настройками безопасности сетей и др. Итоговая работа, может включать в себя элементы всех тем курса. Максимальная оценка за выполненное задание — 10 баллов
Промежуточная аттестация

Промежуточная аттестация

  • 2024/2025 3rd module
    0.3 * Домашние задания с проверкой преподавателем (темы 3,6) + 0.2 * Домашние задания с самопроверкой (темы 2,4,5,7,8,9,10) + 0.4 * Итоговая работа по 3-му модулю + 0.1 * Итоговый тест по 2-му модулю
Список литературы

Список литературы

Рекомендуемая основная литература

  • Федоров, Д. Ю.  Программирование на языке высокого уровня Python : учебное пособие для вузов / Д. Ю. Федоров. — 5-е изд., перераб. и доп. — Москва : Издательство Юрайт, 2023. — 227 с. — (Высшее образование). — ISBN 978-5-534-17323-9. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/532868 (дата обращения: 27.08.2024).
  • Чернышев, С. А.  Основы программирования на Python : учебное пособие для вузов / С. А. Чернышев. — 2-е изд., перераб. и доп. — Москва : Издательство Юрайт, 2023. — 349 с. — (Высшее образование). — ISBN 978-5-534-17139-6. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/532446 (дата обращения: 27.08.2024).
  • Янцев, В. В. Web-программирование на Python / В. В. Янцев. — 2-е изд., стер. — Санкт-Петербург : Лань, 2023. — 180 с. — ISBN 978-5-507-46546-0. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/310289 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Рекомендуемая дополнительная литература

  • Борзунов, С. В. Языки программирования. Python: решение сложных задач / С. В. Борзунов, С. Д. Кургалин. — Санкт-Петербург : Лань, 2023. — 192 с. — ISBN 978-5-507-45923-0. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/319394 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
  • Карепова, Е. Д. Основы многопоточного и параллельного программирования: Учебное пособие / Карепова Е.Д. - Краснояр.:СФУ, 2016. - 356 с.: ISBN 978-5-7638-3385-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/966962
  • Персиваль, Г. Python. Разработка на основе тестирования. Повинуйся Билли-тестировщику, используя Django, Selenium и JavaScript / Г. Персиваль , перевод с английского А. В. Логунов. — Москва : ДМК Пресс, 2018. — 622 с. — ISBN 978-5-97060-594-3. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/111440 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Авторы

  • Аксенова Ольга Вениаминовна
  • Яганова Мадина Владимировна
  • Евсютин Олег Олегович