Магистратура
2024/2025
Программирование на Python
Статус:
Курс обязательный (Кибербезопасность)
Когда читается:
1-й курс, 2, 3 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Программа дисциплины
Аннотация
В рамках дисциплины студенты научатся описывать алгоритмы для решения задач и работы с данными. Разберут, как улучшить и упростить программу с помощью модулей, итераторов, декораторов. Изучат технологии для тестирования кода, разбора текста и веб-страниц. По завершению дисциплины студенты будут обладать теоретическими знаниями и профессиональными компетенциями программирования на языке 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 module0.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). — Режим доступа: для авториз. пользователей.