Как сделать пакмана на питоне
Зачем кому-то писать вредоносное ПО на Python? Мы собираемся сделать это, чтобы изучить общие принципы разработки вредоносных программ, а в то же время вы сможете попрактиковаться в использовании этого языка и применить полученные знания для других целей. Кроме того, вредоносное ПО Python встречается в естественных условиях, и не все программы защиты от вирусов обращают на него внимание.
Конечно, приведенные в статье скрипты никоим образом не подходят для использования в боевых условиях — в них нет обфускации, принципы работы просты, как дважды два, и нет никаких вредоносных функций. Однако проявив немного изобретательности, их можно использовать для простых грязных уловок — например, выключения чьего-либо компьютера в классе или в офисе.
Теория
Определяем IP
Во-первых, нам (то есть нашему трояну) нужно определить, где он оказался. Важной частью вашей информации является IP-адрес, который вы можете использовать для подключения к зараженному компьютеру в будущем.
Начнем писать код. Сразу импортируем библиотеки:
Обе библиотеки не поставляются с Python, поэтому, если они у тебя отсутствуют, их нужно установить командой pip .
Код получения внешнего и внутреннего адресов будет таким. Обрати внимание, что, если у жертвы несколько сетевых интерфейсов (например, Wi-Fi и Ethernet одновременно), этот код может вести себя неправильно.
Если с локальным адресом все более‑менее просто — находим имя устройства в сети и смотрим IP по имени устройства, — то вот с публичным IP все немного сложнее.
Я выбрал сайт api. ipify. org , так как на выходе нам выдается только одна строка — наш внешний IP. Из связки публичный + локальный IP мы получим почти точный адрес устройства.
Вывести информацию еще проще:
Никогда не встречал конструкции типа print( f'<> ') ? Буква f означает форматированные строковые литералы. Простыми словами — программные вставки прямо в строку.
Строковые литералы не только хорошо смотрятся в вашем коде, они также помогают избежать таких ошибок, как сложение строк и добавление чисел (Python это не JavaScript!).
Python - очень популярный язык среди разработчиков. Легко и весело писать сценарии для автоматизации и сборки.
Некоторые из распространенных случаев использования:
- Создание ботов
- Создание сайтов
- Машинное обучение, визуализация данных и анализ
- Веб-разработка с такими фреймворками, как Django и Flask
- Разработка игр с Pygame
- Мобильные приложения с фреймворками, такими как Kivy
В этой статье я постараюсь охватить несколько примеров и покажу вам некоторые забавные вещи, которые вы можете делать с Python.
1. Для веб-разработки
Python имеет очень хорошую поддержку для веб-разработки с его фреймворками, такими как Django, Flask и другими. Он может использоваться для создания веб-приложений на стороне сервера и может быть интегрирован с любым внешним интерфейсом. Обычно разработчики используют JavaScript во внешнем интерфейсе и python для поддержки операций на стороне сервера. Python не используется напрямую в браузерах.
Django является одним из самых популярных веб-фреймворков на Python. Эти инфраструктуры предоставляют пакет, в котором у вас есть определенная структура, с легкостью поддерживает взаимодействие с базой данных; все это настраивается с помощью минимальной команды установки. Если вы хотите что-то минимальное для начала - я рекомендую Flask!
Пример - доступ к файловой системе компьютера со смартфона.
Вы можете получить доступ к вашей файловой системе, запустив файловый сервер на вашем компьютере. Перейдите в нужный каталог, к которому вы хотите получить доступ, и выполните следующую команду:
Данная команда запускает файловый сервер, к которому можно получить доступ в той же сети. Чтобы получить доступ к своим файлам на мобильном устройстве, просто подключитесь к той же сети (Wi-Fi или воспользуйтесь точкой доступа телефона на ноутбуке). Теперь откройте браузер в вашем телефоне.
Проверьте свой IP, запустив - ifconfig . Проверьте ваш локальный IP (должен начинаться с 192.168….)
И на мобильном телефоне вы увидите текущий каталог
2. Автоматизация и скриптинг
Если вы программист, вы, вероятно, будете ленивы и захотите автоматизировать практически все, что можете, верно?
Не беспокойтесь, питон тебя прикроет. Есть множество вещей, которые вы можете автоматизировать всего за 4-5 строк кода. От установки заданий cron и напоминаний до загрузки ваших любимых видео на YouTube, вы можете сделать все это с помощью нескольких строк в python.
Пример - конвертировать CSV в JSON
Вы можете преобразовать файл CSV в JSON с помощью всего одной команды в Python!
Замените его на filename.csv, и вы получите вывод JSON!
3. Создание игр
С помощью Python вы можете разрабатывать игры. Его библиотека Pygame очень крутая. Он поддерживает художественные, музыкальные, звуковые, видео и мультимедийные проекты, которые будут создаваться вместе с ним. Вы даже можете создавать кроссплатформенные игры, используя Kivy , который работает на Windows, Mac, Linux, Android и iOS.
Виселица в терминале
Вот простая программа на Python, которая позволяет вам играть в виселицу в терминале. Код может быть значительно сокращен, и я оставлю это в качестве упражнения для вас!
Вывод будет выглядеть примерно так:
4. Веб-парсинг
Вы встречаете много данных каждый день на нескольких сайтах. Подумайте, как было бы здорово, если бы вы могли легко получить доступ к этим данным.Python делает данный процесс еще проще благодаря своей удивительной поддержке и библиотекам. Данные в сети неструктурированы, и python предоставляет простой способ для анализа и использования этих данных и даже для дальнейшего анализа и операций.
Вот некоторые популярные библиотеки для парсинга:
Пример - получить значение валюты по сравнению с долларом США
Давайте используем парсинг для получения значений валюты:
5. Наука о данных и машинное обучение
Python хорошо подходит для манипулирования данными, анализа и реализации сложных алгоритмов. Синтаксический анализ и визуализация данных обычно представляют собой простые функции или несколько строк кода с библиотеками Python, такими как NumPy, scipy, scikit-learn и т.д.
Python можно использовать в приложениях с интенсивным использованием данных и машинном обучении, используя множество популярных библиотек, таких как:
Есть много инструментов глубокого обучения, которые поддерживают Python. Некоторые популярные библиотеки и фреймворки:
Еще одна причина, по которой Python популярна, заключается в том, что даже сложные модели машинного обучения могут быть реализованы с помощью 20-40 строк кода.
Заключение
В этом руководстве обсуждались различные области, в которых может использоваться python. Я предоставил несколько классных и простых примеров для демонстрации, но есть гораздо больше замечательных приложений и инструментов, которые вы можете создать с помощью Python. Я надеюсь, что вы узнали что-то новое!
Комментарий может занимать всю строчку:
или может находиться на строчке после какого-нибудь кода:
Внимание: любую строку можно превратить в комментарий, достаточно в начале строки набрать комбинацию клавиш Ctrl+/
Числа
Числа в Python бывают трёх типов:
Строки
Строка – это последовательность символов. Чаще всего строки – это просто некоторые наборы слов. Слова могут быть как на английском языке, так и почти на любом языке мира.
Кавычки
Строку можно указать, используя одинарные кавычки, как например, 'Это строка'. Любой одиночный символ в кавычках, например, 'ю' — это строка. Пустая строка '' — это тоже строка. То есть строкой мы считаем всё, что находится внутри кавычек.
Запись строки в одинарных кавычках это не единственный способ. Можно использовать и двойные кавычки, как например, ''Это строка''. Для интерпретатора разницы между записями строки в одинарных и двойных кавычках нет.
Внимание :
Если строка началась с двойной кавычки — значит и закончиться должна на двойной кавычке.
Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных кавычках.
Театр '' Современник ' '
print ('Театр '' Современник '' ')
Строка, занимающая несколько строк, должна быть обрамлена тройными кавычками ( '' '' '' или ''' ). Например:
'''В Python можно использовать одинарные,
двойные и тройные кавычки,
чтобы обозначить строку'''
Отступы
Сдвиг строки с помощью пробелов называется отступами .
Оператор присваивания
Переменная – это именованная область памяти, в которой хранятся данные. Данные помещаются в эту область памяти, как в ящик, с помощью оператора присваивания. Общая форма записи операции присваивания:
Знакомый нам знак равно (=) в программирование это знак операции присваивания. Различие между знаками равно и присваивания в следующем.
Например:
В обычной математической записи выражение b (рано) = b + 2 является не верным. Однако запись оператора присваивания b (присвоить) = b + 2 правильная и означает следующее: к текущему значению переменной b, например, оно было равно 4, прибавляется число 2 , и после выполнения данного оператора, значение переменной будет равно 6.
Основные операторы
Оператор
Краткое описание
Сложение (сумма x и y)
Вычитание (разность x и y)
Умножение (произведение x и y)
Внимание! Если x и y целые, то результат всегда будет целым числом! Для получения вещественного результата хотя бы одно из чисел должно быть вещественным. Пример: 40/5 → 8, а вот 40/5.0 → 8.0
y+=x; эквивалентно y = y + x;
y-=x; эквивалентно y = y - x;
y*=x; эквивалентно y = y * x;
y/=x; эквивалентно y = y / x;
y%=x; эквивалентно y = y % x;
больше или равно
меньше или равно
Деление по модулю - деление, в котором возвращается остаток.
4 % 2 в результате будет 0
5 % 2 в результате будет 1
Целочисленное деление - деление, в котором возвращается целая часть результата. Часть после запятой отбрасывается
4 // 3 в результате будет 1
25 // 6 в результате будет 4
Возведение в степень
5 ** 2 в результате будет 25
логическое отрицание НЕ
Основные типы данных
Имя
Тип
Описание
int
float
str
Последовательность символов: " abc " , " pyhton " , " 123 "
list
Последовательность объектов: [ 1, 2.0, " Привет! " ]
dist
tuple
Последовательность неизменных объектов:(20,25 )
set
Последовательность уникальных объектов:
bool
Логические значения: True или False
Список
Список (list) представляет тип данных, который хранит набор или последовательность элементов.
Для создания списка в квадратных скобках [ ] через запятую перечисляются все его элементы.
Создание пустого списка
Создание списка чисел:
Создание списка слов:
Создание списка из элементов разного типа
Для управления элементами списки имеют целый ряд методов. Некоторые из них:
Кроме того, Python предоставляет ряд встроенных функций для работы со списками:
Генераторы
Для создания списков, заполненных по более сложным формулам можно использовать генераторы: выражения, позволяющие заполнить список значениями, вычисленными по некоторым формулам.
Общий вид генератора следующий :
Прим ер. Создать список чисел от 0 до 10
[ i for i in range ( 0 , 10 )]
Вся конструкция заключается в квадратные скобки, потому что будет создан список. Внутри квадратных скобок можно выделить три части:
1) что делаем с элементом i : просто добавляем значение i в список
2) что берем: берем i
3) откуда берем : из объекта range .
Части отделены друг от друга ключевыми словами for и in .
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Пример . Создать список заглавных букв английского алфавита. Код символа ' A ' – 65, код символа ' Z ' – 91. Поскольку символы идут подряд, то возможно использовать генератор.
что делаем: к значению элемента i применяем функцию chr ( i ).
Внимание. Функция chr ( i ) – по числовому коду символа возвращает сам символ. Пример. chr (65) даст символ ' A '.
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
Пример. Создать список строчный букв английского алфавита. Код символа 'a' – 97, код символа 'z' – 123. Поскольку символы идут подряд, то возможно использовать генератор.
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
Библиотека math
Для проведения вычислений с действительными числами язык Python содержит много дополнительных функций, собранных в библиотеку, которая называется math . Для использования этих функций в начале программы необходимо подключить библиотеку, что делается командой
После подключения программа получает доступ ко всем функциям, методам и классам, содержащимся в нём. После подключения можно вызвать любую функцию из подключенной библиотеки по следующему правилу: указывается имя модуля и через точку имя функции
Можно подключать не весь модуль, а какую-то его часть. Например, программист хочет использовать только одну функцию из математической библиотеки math . Если он подключит всю библиотеку, то будет добавлено более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from :
Ниже приведен список основных функций модуля math . Некоторые из перечисленных функций ( int , round , abs ) являются стандартными и не требуют подключения модуля math для использования.
Функция
Описание
Округление
int(x)
Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math .
round(x)
Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа.
round(x, n)
Округляет число x до n знаков после точки. Это стандартная функция, для ее использования не нужно подключать модуль math .
floor(x)
ceil(x)
abs(x)
Модуль (абсолютная величина). Это — стандартная функция.
Корни, логарифмы
sqrt(x)
Квадратный корень. Использование : sqrt(x)
log(x)
Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b .
e
Основание натуральных логарифмов e = 2,71828.
Тригонометрия
sin(x)
Синус угла, задаваемого в радианах
cos(x)
Косинус угла, задаваемого в радианах
tan(x)
Тангенс угла, задаваемого в радианах
asin(x )
Арксинус, возвращает значение в радианах
acos(x)
Арккосинус, возвращает значение в радианах
atan(x)
Арктангенс, возвращает значение в радианах
atan2(y, x)
Полярный угол (в радианах) точки с координатами (x, y).
degrees(x)
Преобразует угол, заданный в радианах, в градусы.
radians(x)
Преобразует угол, заданный в градусах, в радианы.
pi
Константа π = 3.1415.
Генерация случайных чисел (модуль random)
Python порождает случайные числа на основе формулы, так что они на самом деле не случайные, а, как говорят, псевдослучайные.
Модуль random позволяет генерировать случайные числа и имеет большое множество важных для практики функций. Рассмотрим основные функции:
Функция random . random () случайное число от 0 до 1.
В этой статье я расскажу, как написать на Python простейший троян с удаленным доступом, а для большей скрытности мы встроим его в игру. Даже если ты не знаешь Python, ты сможешь лучше понять, как устроены такие вредоносы, и поупражняться в программировании.
Конечно, приведенные в статье скрипты никак не годятся для использования в боевых условиях: обфускации в них нет, принципы работы просты как палка, а вредоносные функции отсутствуют напрочь. Тем не менее при некоторой смекалке их возможно использовать для несложных пакостей — например, вырубить чей‑нибудь компьютер в классе (или в офисе, если в классе ты не наигрался).
Теория
Логика подобного заражения в том, что пользователь сам скачает себе вредонос на компьютер (например, под видом крякнутой программы), сам отключит защитные механизмы (ведь программа выглядит хорошей) и захочет оставить надолго. Хакеры и тут не дремлют, так что в новостях то и дело мелькают сообщения о новых жертвах пиратского ПО и о шифровальщиках, поражающих любителей халявы. Но мы‑то знаем, что бесплатный сыр бывает только в мусорке, и сегодня научимся очень просто начинять тот самый сыр чем‑то не вполне ожидаемым.
warning
Вся информация предоставлена исключительно в ознакомительных целях. Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный материалами данной статьи. Несанкционированный доступ к информации и нарушение работы систем могут преследоваться по закону. Помни об этом.
Определяем IP
Сначала нам (то есть нашему трояну) нужно определиться, где он оказался. Важная часть твоей информации — IP-адрес, по которому с зараженной машиной можно будет соединиться в дальнейшем.
Начнем писать код. Сразу импортируем библиотеки:
Обе библиотеки не поставляются с Python, поэтому, если они у тебя отсутствуют, их нужно установить командой pip .
Код получения внешнего и внутреннего адресов будет таким. Обрати внимание, что, если у жертвы несколько сетевых интерфейсов (например, Wi-Fi и Ethernet одновременно), этот код может вести себя неправильно.
Если с локальным адресом все более‑менее просто — находим имя устройства в сети и смотрим IP по имени устройства, — то вот с публичным IP все немного сложнее.
Я выбрал сайт api. ipify. org , так как на выходе нам выдается только одна строка — наш внешний IP. Из связки публичный + локальный IP мы получим почти точный адрес устройства.
Вывести информацию еще проще:
Никогда не встречал конструкции типа print( f'<> ') ? Буква f означает форматированные строковые литералы. Простыми словами — программные вставки прямо в строку.
Строковые литералы не только хорошо смотрятся в коде, но и помогают избегать ошибок типа сложения строк и чисел (Python — это тебе на JavaScript!).
Читайте также: