Самые известные программы на питоне

В этой статье пойдет разговор о практическом использовании языка программирования Python и о том, какими возможностями он обладает. Также будут рассмотрены основные характеристики и сферы применения Python.

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

Три основные области применения «Питона»:

— Big Data и Machine learning (машинное обучение, работа с данными: анализ, визуализация и т. д.);

— скриптинг (написание скриптов автоматизации).

Но давайте обо всем по порядку.

Устройство Python. Преимущества языка

Python — язык высокоуровневого типа, который поддерживает следующие виды программирования:

Основной упор сделан на читаемость кода и повышение скорости работы программиста. Синтаксис ядра «Питона» является минималистичным, а стандартная библиотека обладает широким набором функций.

PYTHON Г@ВНО? НА ЧТО СПОСОБЕН PYTHON :3

Архитектурные черты:

— механизм обработки исключений;

— высокоуровневые структуры данных;

— разбиение программ на модули, которые можно объединять в пакеты.

Эталонная реализация — интерпретатор CPython — его поддерживает большая часть активно используемых платформ. Распространение языка осуществляется под свободной лицензией. Существуют реализации интерпретатора для JVM,CLR, LLVM и прочие. Проект PyPy задействует JIT-компиляцию, увеличивающую скорость выполнения программ, написанных на Python.

Тезисно о преимуществах:

— низкий порог вхождения. При адекватных усилиях «Пайтон» поймет даже новичок (подходит в качестве первого языка);

— синтаксис прост, лаконичен, понятен, то есть скорость разработки повышается;

— кроссплатформенность. Программировать можно почти на всех платформах;

— большое и активное профессиональное сообщество, множество доступной технической и обучающей информации;

— мощная поддержка крупных компаний IT-индустрии;

— большое количество дополнительных фреймворков и библиотек, еще больше расширяющих возможности использования языка (для решения той либо иной коммерческой задачи не надо каждый раз изобретать велосипед);

— востребованность Python-специалистов на современном рынке труда;

— широкое применение в разных сферах. Это преимущество является закономерным следствием вышеуказанных плюсов.

Из минусов: Python — язык программирования с динамической типизацией, и пусть скорость написания кода выше, а в силу синтаксиса — писать проще, но по производительности Python все же уступает компилируемым языкам, тому же C++.

После краткого знакомства с языком Python, перейдем к примерам его практического применения.

Web-разработка

Для разработки веба подключают специальные фреймворки, наиболее популярными являются Django и Flask. Благодаря фреймворкам, работа по написанию веб-приложений значительно упрощается. К примеру, фреймворки помогают реализовывать нужные бизнес-процессы, облегчают рефакторинг старых сайтов, упрощают применение Ajax и так далее.

Голодные игры python junior. Дуэли. Дана Горева vs Владимир Иванов

Два слова о Django и Flask:

  • Flask. Гибок, прост в эксплуатации, минималистичен;
  • Django. «Все включено»: административная панель, ORM, интерфейс базы данных, структура каталогов для готовых проектов и программных приложений.

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

Работа с данными

Машинное обучение сегодня более чем популярно и у всех на слуху. При использовании Machine learning (ML) задействуются методы работы с искусственным интеллектом. Существует много алгоритмов машинного обучения, которые применяются в системах распознавания лиц, голосов, изображений и прочих системах. Всего не перечесть.

Если интересуют подробности, основные алгоритмы машинного обучения и примеры использования ML для решения реальных проблем, вам сюда. Также может представлять определенный интерес подборка Open Source-проектов по машинному обучению.

Таким образом, именно Python в силу своих возможностей чаще всего используется в Data Science. С его помощью пишут алгоритмы ML-программ и аналитические приложения. Среди популярных фреймворков и библиотек для ML можно выделить scikit-learn и TensorFlow.

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

Также «Питон» подходит для написания парсеров, позволяющих выполнять сбор информации в глобальной сети. А еще с его помощью обслуживают облачные сервисы, хранилища данных и т. п.

Скриптинг

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

Широко применяется «Пито н» и при автоматизации тестирования ПО. Таким образом, если вы освоите этот язык, вы сможете развивать свою карьеру по целому ряду IT-направлений:

— дата-инженер, data scientist, специалист по машинному обучению;

— QA-инженер (тестировщик) с уклоном в автоматизацию тестирования.

Где еще используется Python?

Кроме вышеописанных сфер, Python используется и в следующих целях:

— разработка приложений для мобильных устройств. Да, для гаджетов с ОС Android больше нужен Java или Kotlin, для iOS — нужен язык Swift либо Objective-C. Однако на Python могут разрабатывать серверную часть приложений;

— создание десктопных программ для ПК (для разработки графического интерфейса можно воспользоваться, к примеру, библиотекой Tkinter);

— разработка встроенных систем для разных цифровых устройств. Классический пример — Raspberry Pi. Также это могут быть системы управления банкоматами и пр.;

— создание игр. Тут нужно вспомнить несколько серьезных проектов, где задействовался Python: Battlefield 2, World of Tanks. Также с его помощью была создана Civilization IV. Если же создавать игры — это просто личное хобби, обратите внимание на фреймворк PyGame.

Итог

Пришло время сделать краткие выводы. Пусть «Пайтон» и не «самый-самый», но один из лучших — это точно, и говорить об этом можно смело. Да и вряд ли кто будет спорить с тем, что такая универсальность и популярность языка означает, что его знания не останутся невостребованными на рынке труда.

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

Нужен курс для продвинутых? Хотите получить знания от практикующих экспертов? Переходите по ссылке ниже:

  • https://zen.yandex.ru/media/nuancesprog/gde-i-kak-primenit-python-na-praktike-tri-osnovnye-sfery-ego-primeneniia-5dd6c7b7d8a5147cefe9a62e

Источник: otus.ru

Самые известные программы на питоне

XVII Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

  • Главная
  • Список секций
  • Информатика
  • Обучающие приложения на языке программирования Python

Обучающие приложения на языке программирования Python

Серая А.Д. 1
1 Гимназия №82
Наталенко Светлана Владимировна 1
1 Гимназия 82

Автор работы награжден дипломом победителя I степени

Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке «Файлы работы» в формате PDF

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

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

Цель проекта: разработка обучающего приложения на языке программирования Python.

Задачи исследования:

Изучить историю данного языка

Освоить базовые элементы для создания приложений

Разработать обучающее приложение в Python

Актуальность исследования: в настоящее время Python — один из самых популярных языков, который охватывает все сферы применения. Многие люди и не думают, что интернет и программирование могут быть использованы ими в повседневной жизни, к примеру для обучения. В ходе данной исследовательской работы будет показано практическое применение языка Python, что поможет в образовательной деятельности, расширит кругозор пользователей и даст знания в области информатики.

Читайте также:
Программа 1 с склад как посмотреть остатки на складе

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

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

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

Краткий литературный анализ:

. Изучение практической значимости и создание собственных обучающих приложений на языке программирования Python

1.1. Исследовательская работа

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

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

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

Предлагаю рассмотреть викторину по истории, сделанную одним из пользователей сети Интернет. Её формат предполагает, что нам будет дан вопрос и на него необходимо ответить. Вариантов ответов, как при тестировании, нет.

Таким образом будет выглядеть программный код (Рисунок №1).

Рисунок №1. Программа-викторина №1 на Python

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

В следующих строках постоянно объявляется новая переменная( otv ), которая используется далее уловным оператором ( if и else ). При совпадении ответа пользователя с правильным выводится слово «Верно» функцией print (), а также увеличивается количество правильных ответов на 1. В ином случае на экран будет выведена фраза «Не верно». Кроме того, в некоторых случаях используется функция lower (), которая предназначена для перевода всех символов строки в нижний регистр. Её необходимо использовать, так как не известно, как именно напишет ответ пользователь: с большой буквы или нет. Таким образом в программе прописаны все вопросы викторины, а в самой последней строчке печатается число верных ответов и общее количество вопросов. Вот так будет выглядеть результат работы (Рисунок №2).

Рисунок №2. Выходные данные программы-викотрины №1

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

Далее мы проанализировали программу следующего автора (Рисунок №3).

Рисунок №3. Программа-викторина №2 на Python

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

Он создаётся для того, чтобы можно было писать вопросы и ответы к ним вместе, а также каждый раз не нужно будет снова использовать условный оператор. Подобный подход экономит время автора, что невероятно важно. В 4 строке создаётся непосредственно главный список, а в 5-7 небольшие списки, состоящие из вопроса и правильного ответа к нему.

Далее с помощью функции append () в основной массив включаются остальные строго по порядку. В 12 строке начинается цикл, похожий на предыдущий, но данный гораздо проще и удобнее. В последней строке выводится количество верных ответов из общего числа. А сама программа на выводе почти не отличается от предыдущей, разобранной нами (Рисунок №4).

Рисунок№4. Выходные данные программы-викотрины №2

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

1.2. Создание собственных обучающих приложений

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

1. Сначала необходимо выбрать место, где оно будет написано. Для этого мы переходим на сайт https://www.online-python.com, открываем уже знакомый нам компилятор и приступаем.

2. В первой строке объявляется переменная-счётчик верных ответов пользователя. Во второй – общее их количество, а именно 15. Переменная — это имя, которое мы присваиваем значению. Это позволяет нам давать значимые имена данным. Для этого мы используем оператор присваивания (=).

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

3. Далее мы создаём общий список, состоящий из небольших подсписков. В каждом из них хранятся вопрос, верный ответ к нему и пояснение. Также мы воспользовались символом новой строки n . Благодаря этому можно успешно делать вопросы с вариантами ответа. Строка — это набор символов, заключенных в одинарные или двойные кавычки. Каждая строка имеет связанный с ней индекс и длину.

Индекс — это способ отслеживания позиции символа в строке. Длина может быть найдена с помощью len оператора в Python.

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

Это позволяет нам повторно использовать код и упростить наши программы. В Python есть встроенные функции и пользовательские, которые вы создаете сами.

5. Далее в нашей программе начинается цикл с условным оператором внутри. Хотя всё и выглядит довольно сложно, конструкция довольно проста. Условный оператор — это логическое выражение. С ним фрагмент кода выполняется только в том случае, если что-то является истиной или ложью, в зависимости от условий. Это отличный способ придать вашей программе некоторую логику.

6. Возвращаясь к нашей программе, хочется уточнить, что за переменную принимается каждый подсписок, в котором мы после будем вызывать вопрос( i [0]), правильный ответ( i [1]), и пояснение( i [2]). Нумерация составляющих массива идёт с 0, поэтому и мы не имеем i [3].

7. В последней строке выводится количество верных ответов из общего числа. В итоге готовая программа выглядит таким образом (Приложение №5-7), а вот таким — выходные данные (Рисунок №8-10).

Читайте также:
Решение о внесении изменений в программу

Рисунок №5. Собственная программа на Python

Рисунок №6. Собственная программа на Python

Рисунок №7. Собственная программа на Python

Рисунок №8. Выходные данные собственной программы

Рисунок №9. Выходные данные собственной программы

Рисунок №10. Выходные данные собственной программы

Из Рисунка №9 видно, что при вводе неверного ответа, программа будет указывать на ошибку и выводить правильный вариант.

Викторина может быть использована при самостоятельном тестировании любым пользователем сети Интернет, для прохождения необходимо просто запустить программу кнопкой run , светящейся зелёным цветом. Для большего удобства стоит воспользоваться кнопкой открыть на весь экран, которая находится на панели слева внизу и выглядит как стрелки, повёрнутые в разные стороны. Но при прохождении немало важно помнить о времени, ведь оно ограничено, после долгого ожидания ответа программа завершится сама. Также мы оформили ссылку на готовую программу в виде QR -кода, который можно отсканировать камерой мобильного устройства (Рисунок №11).

Рисунок №11. QR -код созданной программы

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

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

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

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

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

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

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

Список использованных материалов

Николай Прохоренок: Python 3 и PyQt Разработка приложений . – БХВ-Петербург, 2012г. – 667с.

Источник: school-science.ru

Вредоносные Python-приложения: создание, примеры, методы анализа и детектирования

PyInstaller

PyInstaller умеет преобразовывать Python-скрипты в самостоятельные исполняемые файлы для Windows, Linux, macOS посредством «замораживания» кода. Этот метод является одним из наиболее популярных для преобразования кода в исполняемый формат и широко используется как в легитимных, так и во вредоносных целях. В качестве примера создадим простейшую программу «Hello, world!» и преобразуем в исполняемый файл при помощи PyInstaller:

В результате мы получили портативный, самодостаточный файл в формате ELF, являющийся эквивалентом EXE-файла в Windows. Теперь для сравнения создадим и скомпилируем ту же самую программу на C:

$ cat hello.py print(‘Hello, world!’) $ pyinstaller —onefile hello.py . $ ./dist/hello Hello, world! $ file dist/hello dist/hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=294d1f19a085a730da19a6c55788ec08c2187039, stripped $ du -sh dist/hello 7.0M dist/hello

Обратите внимание на разницу в размерах полученных исполняемых файлов: 7 МБ (Python) и 20 КБ (C)! В этом заключается один из основных недостатков, упоминаемым ранее, касательно размера файла и использования памяти. Исполняемый файл, скомпилированный из Python-кода, намного больше, поскольку внутри исполняемого файла должен присутствовать интерпретатор (как разделяемый объектный файл в Линуксе) для осуществления успешного запуска.

Py2exe

Py2exe – еще один популярный метод для конвертирования кода в самостоятельный исполняемый файл в формате EXE. Как и в случае с PyInstaller вместе с кодом идет интерпретатор с целью создания портативного исполняемого файла. Хотя py2exe, скорее всего, со временем перестанет использоваться, поскольку не поддерживает версии после Python 3.4, так как байт код в CPython сильно изменился в Python 3.6 и выше. Py2exe использует пакет distutils и требует создания небольшого setup.py для создания исполняемого файла. Как и в предыдущем примере, создадим простейшую программу «Hello, world!» и скомпилируем при помощи py2exe:

> type hello.py print(‘Hello, world!’) > type setup.py import py2exe from distutils.core import setup setup( console=[‘hello.py’], options=>, zipfile=None ) > python setup.py py2exe . > disthello.exe Hello, world!

Размер файла примерно тот же самый, что и в случае с PyInstaller (6.83 МБ). Рисунок 2: Размер исполняемого файла, созданного при помощи py2exe

Nuitka

Nuitka, вероятно, является одним из наиболее недооцененных и в то же время более продвинутым методом для преобразования Python-кода в исполняемый файл. Вначале Python-код переводится в С-код, а затем происходит линковка с библиотекой libpython для выполнения кода в точности так же, как в случае с CPython. Nuitka умеет использовать разные C-компиляторы, включая gcc, clang, MinGW64, Visual Studio 2019+ и clang-cl для конвертирования Python-кода в C. Вновь создаем простейшую программу «Hello, world!» и компилируем при помощи Nuitka:

$ cat hello.py print(‘Hello, world!’) $ nuitka3 hello.py . $ ./hello.bin Hello, world! $ file hello.bin hello.bin: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=eb6a504e8922f8983b23ce6e82c45a907c6ebadf, for GNU/Linux 3.2.0, stripped $ du -sh hello.bin 432K hello.bin

В этот раз нам удалось создать портативный бинарный файл размером 432 КБ, что намного меньше, чем при использовании PyInstaller и py2exe. Чтобы разобраться, как удалось добиться столь впечатляющих результатов, посмотрим содержимое папки, где происходила сборка:

$ cloc hello.build/ ——————————————————————————- Language files blank comment code ——————————————————————————- C 11 2263 709 8109 C/C++ Header 1 1 0 7 ——————————————————————————- SUM: 12 2264 709 8116 ——————————————————————————-

Одна строка на Python превратилась в более чем 8 тысяч строк на C. Nuitka работает именно таким образом, когда происходит преобразование Python-модулей в C-код, а затем используется библиотека libpython и статические C-файлы для выполнения, как и в случае с CPython.

Результат выглядит очень достойно и, кажется, с высокой степенью вероятности Nuitka в качестве «компилятора Python» будет развиваться дальше. Например, могут появиться дополнительные полезные функции, например, для защиты от реверс-инжиниринга. Уже есть несколько утилит, которые легко анализируют бинарные файлы, скомпилированные при помощи PyInstaller и py2exe с целью восстановления исходного кода Python. Если же исполняемый файл создан при помощи Nuitka и код преобразован из Python в C, задача реверс-инженера значительно усложняется.

Другие полезные утилиты

  1. Обфускация кода.
  2. Создание скриншотов.
  3. Выполнение веб-запросов.

Обфускация кода

В распоряжении авторов вредоносов, использующих Python, есть множество библиотек для обфускации, чтобы сделать код нечитабельным. Примеры: pyminifier и pyarmor.

Читайте также:
Как работать в программе да винчи резолв

Ниже показан пример использования утилиты pyarmor:

$ cat hello.py print(‘Hello, world!’) $ pyarmor obfuscate hello.py . $ cat dist/hello.py from pytransform import pyarmor_runtime pyarmor_runtime() __pyarmor__(__name__, __file__, b’x50x59x41x52x4dx4fx52x00x00x03x08x00x55x0dx0dx0ax04x00x00x00x00x00x00x00x01x00x00x00x40x00x00x00xd5x00x00x00x00x00x00x18xf4x63x79xf6xaaxd7xbdxc8x85x25x4ex4fxa6x80x72x9fx00x00x00x00x00x00x00x00xecx50x8cx64x26x42xd6x01x10x54xcax9cxb6x30x82x05xb8x63x3fxb0x96xb1x97x0bxc1x49xc9x47x86x55x61x93x75xa2xc2x8cxb7x13x87xffx31x46xa5x29x41x9dxdfx32xedx7axb9xa0xe1x9ax50x4ax65x25xdbxbex1bxb6xcdxd4xe7xc2x97x35xd3x3exd3xd0x74xb8xd5xabx48xd3x05x29x5ex31xcfx3fxd3x51x78x13xbcxb3x3ex63x62xcax05xfbxacxedxfaxc1xe3xb8xa2xaaxfbxaaxbbxb5x92x19x73xf0x78xe4x9fxb0x1cx7ax1cx0cx6axa7x8bx19x38x37x7fx16xe8x61x41x68xefx6ax96x3fx68x2bxb7xecx60x39x51xa3xfcxbdx65xdbxb8xffx39xfexc0x3dx16x51x7fxc9x7fx8bxbdx88x80x92xfexe1x23x61xd0xf1xd3xf8xfaxcex86x92x6dx4dxd7x69x50x8bxf1x09x31xccx19x15xefx37x12xd4xbdx3dx0dx6exbbx28x3exacxbbxc4xdbx98xb5x85xa6x19x11x74xe9xabxdf’, 1) $ python dist/hello.py Hello, world!

Создание скриншотов

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

Пример создания скриншота при помощи библиотеки python-mss:

from mss import mss with mss() as sct: sct.shot()

Выполнение веб-запросов

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

Например, внешний IP-адрес скомпрометированной системы можно легко получить при помощи библиотеки requests:

import requests external_ip = requests.get(‘http://whatismyip.akamai.com/’).text

Преимущества функции

Как правило, встроенная функция eval() считается очень неоднозначной и несет серьезные риски безопасности при использовании в коде. С другой стороны, эта функция очень полезна при написании вредоноса.

Функция eval() очень мощная и может использоваться для выполнения строк Python-кода внутри скрипта. Эта одиночная функция часто используется для запуска в скомпилированном вредоносе высокоуровневых скриптов или «плагинов» налету при корректной реализации. Схожим образом, во вредоносах, написанных на C, используется движок для Lua для запуска скриптов, написанных на этом языке. Подобный функционал был обнаружен в известных вредоносах, как, например, у Flame.

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

Переходим к рассмотрению реальных примеров вредоносов из дикой природы.

SeaDuke

SeaDuke – вероятно наиболее известный вредонос, написанный на Python. В 2015-2016 годах Национальный комитет демократической партии (DNC) был скомпрометирован двумя группами, которые многие аналитики приписали к APT 28 и 29.

Впечатляющий анализ SeaDuke был проведен командой Unin 42 из компании Palo Alto. Также доступен декомпилированный исходный код этого вредоноса. Кроме того, компания F-Secure опубликовала прекрасный документ, где рассматривается SeaDuke и связанные вредоносы.

SeaDuke представляет собой троян, написанный на Python, который был преобразован в исполняемый файл для Windows при помощи PyInstaller и обработан упаковщиком UPX. Исходный код был обфусцирован с целью затруднения анализа. У вредоноса есть масса возможностей, включая несколько методов для незаметного и долговременного пребывания в Windows, кроссплатформенного запуска и выполнения веб-запросов с целью получения команд и управления.

Рисунок 4: Образец кода SeaDuke

PWOBot

PWOBot также является известным вредоносом, который, как и SeaDuke, был скомпилирован при помощи PyInstaller. Основная активность PWOBot пришлась в период 2013-2015 годов и затронула несколько европейских организаций преимущественно в Польше.

У PWOBot было множество функций, включая сбор нажатых клавиш, закрепление в системе, загрузку и выполнения файлов, запуск Python-кода, создание веб-запросов и майнинг криптовалют. Прекрасный анализ PWOBot был проведен командой Unit 42 из компании Palo Alto.

PyLocky

PyLocky представляет собой программу-вымогатель, скомпилированную при помощи PyInstaller. Основная активность была замечена в США, Франции, Италии и Корее. В этом вредоносе реализовано противодействие запуску в песочнице, получение команд и управление извне, а также шифрование файлов при помощи алгоритма 3DES.

Хороший анализ PyLocky был сделан специалистами из компании Trend Micro, а аналитикам из компании Talos Intelligence удалось создать расшифровщик файлов для восстановления информации, зашифрованной в системах жертв.

PoetRAT

PoetRAT представляет собой троян, целью которого было азербайджанское правительство и энергетический сектор в начале 2020 года. Троян закреплялся в системах и воровал информацию, имеющую отношение к ICS/SCADA системам, управляющим воздушными турбинами.

Вредонос передавался при помощи Word-документов и содержал массу возможностей для кражи информации, включая скачивание файлов через FTP, съем изображений с веб-камер, загрузку дополнительных утилит, кейлоггинг, работу с браузерами и кражу учетных записей. Специалисты компании Talos Intelligence написали прекрасную статью, посвященную неизвестному деятелю, использующему этот вредонос.

Ниже показан скрипт, используемый для съема изображений с веб-камер:

Рисунок 5: Участок кода для съема изображений с веб-камер

Вредоносы с открытым исходным кодом

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

Утилиты для анализа вредоносов

Существует множество утилит для анализа вредоносов, написанных на Python, даже в скомпилированном виде. Коротко рассмотрим некоторые из доступных инструментов.

uncompyle6

Приемником decompyle, uncompyle и uncompyle2 стала утилита uncompyle6, представляющая собой кроссплатформенный декомпилятор, который может использоваться для преобразования байт кода в исходный Python-код.

Рассмотрим простейший скрипт «Hello, world!» и выполним в качестве модуля в виде pyc-файла (содержащего байт-код), показанного ниже. Исходный код можно восстановить при помощи uncompyle.

$ xxd hello.cpython-38.pyc 00000000: 550d 0d0a 0000 0000 16f3 075f 1700 0000 U. _. 00000010: e300 0000 0000 0000 0000 0000 0000 0000 . 00000020: 0002 0000 0040 0000 0073 0c00 0000 6500 [email protected] 00000030: 6400 8301 0100 6401 5300 2902 7a0d 4865 d. d.S.).z.He 00000040: 6c6c 6f2c 2077 6f72 6c64 214e 2901 da05 llo, world!N). 00000050: 7072 696e 74a9 0072 0200 0000 7202 0000 print..r. r. 00000060: 00fa 2d2f 686f 6d65 2f75 7365 722f 746d ..-/home/user/tm 00000070: 702f 7079 7468 6f6e 5f61 7274 6963 6c65 p/python_article 00000080: 2f6e 2f74 6573 742f 6865 6c6c 6f2e 7079 /n/test/hello.py 00000090: da08 3c6d 6f64 756c 653e 0100 0000 f300 . 000000a0: 0000 00 $ uncompyle6 hello.cpython-38.pyc | grep -v ‘#’ print(‘Hello, world!’)

pyinstxtractor.py (PyInstaller Extractor)

PyInstaller Extractor может извлекать Python-данные из исполняемых файлов, скомпилированных при помощи PyInstaller.

python pyinstxtractor.py hello.exe .

В итоге будут получены pyc-файлы, которые можно декомпилировать и восстановить исходный код при помощи uncompyle6.

python-exe-unpacker

Скрипт pythonexeunpack.py можно использовать для распаковки и декомпиляции исполняемых файлов, скомпилированных при помощи py2exe.

> python python_exe_unpack.py -i hello.exe .

Детектирования скомпилированных файлов

Во время компиляции PyInstaller и py2exe добавляют уникальные строки в исполняемый файл, что значительно облегчает детектирование при помощи YARA-правил.

PyInstaller записывает строку «pyi-windows-manifest-filename» практически в самом конце исполняемого файла, которую можно наблюдать в шестнадцатеричном редакторе (HxD):

Рисунок 6: Уникальная строка, добавляемая PyInstaller во время компиляции

Ниже показано YARA-правило для детектирования исполняемых файлов, скомпилированных при помощи PyInstaller (источник):

import «pe» rule PE_File_pyinstaller < meta: author = «Didier Stevens (https://DidierStevens.com)» description = «Detect PE file produced by pyinstaller» strings: $a = «pyi-windows-manifest-filename» condition: pe.number_of_resources >0 and $a >

Второе YARA-правило используется для детектирования исполняемых файлов, скомпилированных при помощи py2exe (источник)

import «pe» rule py2exe < meta: author = «Didier Stevens (https://www.nviso.be)» description = «Detect PE file produced by py2exe» condition: for any i in (0 .. pe.number_of_resources — 1): (pe.resources[i].type_string == «Px00Yx00Tx00Hx00Ox00Nx00Sx00Cx00Rx00Ix00Px00Tx00») >

Заключение

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

Почему ваши данные всегда находятся в центре внимания ХАКЕРОВ? Присоединитесь к нашему ТГ каналу и станьте невидимым для хищников цифрового мира.

Источник: www.securitylab.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru