Статья Берем под контроль мышь и клавиатуру Python

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

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

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

Что такое PyAutoGUI и с чем его едят.
Итак, работать мы будем с помощью кроссплатформенного модуля для эмуляции действий пользователей PyAutoGUI. Его основная задача в автоматизации(эмуляции) задач, который работает на Python 2.x, 3.x.

PyAutoGUI умеет работать с мышью и клавиатурой.
Но самое “вкусное” это то, что мы можем управлять клавиатурой и мышью с очень быстрой скоростью, тем самым, например, маневрировать в файловой системе, работать и выполнять команды в командной строке(масло масляное), проектирование автоматизированных ботов для игр и многое другое.

Установка модуля PyAutoGUI
Сначала определимся с вашей ОС.
Код:
sudo pip3 install pyobj-framework-Quartz
sudo pip3 install pyobjc-kernel
sudo pip3 install pyobjc
Код:
sudo pip install python3-xlib
sudo apt-get install scrot
sudo apt-get install python3-tk
sudo apt-get install python3-dev
sudo apt-get install pyautogui
Код:
Для пользователей Windows процесс установки самый простой:
pip(pip3) install pyautogui.

Разбираемся с PyAutoGUI
Прежде чем продолжать мы должны понять, как же нам работать с PyAutoGUI.

Функция moveTo().
Первая важная функция для нас - pyautogui.moveTo (х, у). Не трудно догадаться, что задача этой функции перемещение мыши в определенные координаты. Однако ключом к пониманию этой функции является знание того, как устроен граф координат.
.
Также приложу картинку для понимание принципа работы с координатами:

1547094730060.png


Мы видим, что верхний левый угол имеет координаты (0,0). Перемещение вниз увеличивает координату y, а перемещение вправо увеличивает координату x.

Функция size()
После того как мы научились перемещать указатель, нам ведь необходимо знать ширину и высоту нашего экрана. Мы можем получить размер экрана с помощью функции pyautogui.size().
Мы можем занести эти данные в переменные
[B]x, y = pyautogui.size()[/B]

Функция position()
Эта функция нам пригодится в том случае если нам нужно будет узнать текущие координаты мыши. Она возвращает ширину и высоту. Также можем занести в переменные:
[B]x, y = pyautogui.size()[/B]

Функция click()
Из названии понятно, что функция выполняет щелчек мыши. Это очень простой процесс, код: pyautogui.click().
В качестве аргументов мы можем передавать:
  • какую именно кнопку нажать(левая - button = 'left’, правая - button = 'right');
  • координаты на которых нужно произвести щелчок мыши.

Функция typewrite()
Наконец, нам нужно знать, как использовать клавиатуру. PyAutoGUI еще раз предлагает нам простое решение:
pyautogui.typewrite («Текст, для теста специально для Codeby.net»)
Также мы можем передавать несколько ключей, пример:
pyautogui.typewrite ([ 'Codeby', 'net', 'Debug', 'Python', 'X', 'Y'])
И она напечатает их все по порядку.

Напишем скрипт для автоматической авторизации на сайте Codeby.net
Наша задача будет очень простой, мы напишем скрипт на Python 2.x под Kali Linux, который будет открывать браузер Mozilla Firefox, переходить по адресу Информационная безопасность и защита информации и входить в аккаунт пользователя.

Задача была выдумана, так как наша задача понять основные принципы работы модуля PyAutoGui. Конечно мы могли бы написать, что-то более полезное, например автокликер для заработка на кликах(возможно это лохотрон, но многие знакомые занимались этим делом).

Переходим к самой разработки инструмента.
Вначале сделаем импорт необходимых библиотек, а именно:
Код:
from time import sleep
import pyautogui
Также для работы можно получить ширину и высоту нашего экрана:
Код:
screenWidth,screenHeight = pyautogui.size()

Создадим переменные для хранения логина и пароля:
Код:
login = 'Debug'
password = ‘тутнетпароля’

Создадим переменные для хранения координат:
Код:
FIREFOX_ICON = (38, 153)
FIREFOX_URL = (639, 113)
FIREFOX_FOLLOW_LINKS = (1059,111)

CODEBY_BUTTON_LOGIN = (1081, 194)
CODEBY_BUUTON_PASSWORD = (964,380)
CODEBY_BUUTON_AUTH = (947,514)

Если нам необходимо получить координаты текущего расположения курсора, то можем навести курсор на интересующей нас объект и в терминале ввести команду print(pyautogui.position()) мы получим координаты, которые пригодятся нам для автоклика.
Screenshot from 2019-01-08 07-35-40.png

Screenshot from 2019-01-08 07-37-11.png

Screenshot from 2019-01-08 07-38-36.png

Screenshot from 2019-01-08 07-40-15.png

Screenshot from 2019-01-08 07-53-20.png

Напишем две функции - openBrowser(для открытия браузера Mozilla Firefox), loginInCodeby(для авторизации на сайте Codeby.net)
Python:
def openBrowser():
    print("Opening Browser Firefox")
    pyautogui.click(FIREFOX_ICON)
    sleep(1)   
    pyautogui.click(FIREFOX_URL)
    pyautogui.hotkey('ctrl', 'a')
    pyautogui.keyDown('backspace')
    print("Open site Codeby.net")
    pyautogui.typewrite('https://codeby.net/')
    pyautogui.click(FIREFOX_FOLLOW_LINKS)
    sleep(2)
Python:
def loginInCodeby():
    pyautogui.click(CODEBY_BUTTON_LOGIN)
    sleep(1)
    pyautogui.typewrite(login)
    sleep(1)
    pyautogui.click(CODEBY_BUUTON_PASSWORD)
    pyautogui.typewrite(password)
    sleep(1)
    pyautogui.click(CODEBY_BUUTON_AUTH)

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

Я надеюсь, что вы нашли эта статься с введением в PyAutoGUI оказалась полезным. Мне очень понравился этот модуль из-за того, что он позволяет автоматизировать многие действия.

Python:
from time import sleep
import pyautogui

screenWidth,screenHeight = pyautogui.size()

login = 'Ваш логин'
password = 'Ваш пароль'

FIREFOX_ICON = (38, 153)
FIREFOX_URL = (639, 113)
FIREFOX_FOLLOW_LINKS = (1059,111)

CODEBY_BUTTON_LOGIN = (1081, 194)
CODEBY_BUUTON_PASSWORD = (964,380)
CODEBY_BUUTON_AUTH = (947,514)

def loginInCodeby():
    pyautogui.click(CODEBY_BUTTON_LOGIN)
    sleep(1)
    pyautogui.typewrite(login)
    sleep(1)
    pyautogui.click(CODEBY_BUUTON_PASSWORD)
    pyautogui.typewrite(password)
    sleep(1)
    pyautogui.click(CODEBY_BUUTON_AUTH)   

def openBrowser():
    print("Opening Browser Firefox")
    pyautogui.click(FIREFOX_ICON)
    sleep(1)   
    pyautogui.click(FIREFOX_URL)
    pyautogui.hotkey('ctrl', 'a')
    pyautogui.keyDown('backspace')
    print("Open site Codeby.net")
    pyautogui.typewrite('https://codeby.net/')
    pyautogui.click(FIREFOX_FOLLOW_LINKS)
    sleep(2)
openBrowser()
loginInCodeby()

Ролик с демонстрацией скрипта:
 

Vladdd1

One Level
02.03.2020
1
1
BIT
0
Сайт codeby.com можно было открывать через webbrowser.open_new_tab. Так код получился бы более читаемым и не пришлось бы находить координаты иконки и др.
 
  • Нравится
Реакции: Debug

Ludovic13

Member
23.06.2020
19
0
BIT
0
как можно проверить какая раскладка клавиатуры у пользователя? и потом ее сменить?
 

stepsav

New member
27.06.2020
1
0
BIT
0
Жаль это все бесполезно , когда хочешь написать бота для ммо. Кнопки в играх та не жмутся
 

v3rdin

New member
16.04.2020
1
0
BIT
0
Жаль это все бесполезно , когда хочешь написать бота для ммо. Кнопки в играх та не жмутся
Всё прекрасно жмётся, сам делал себе бота для парочки ММО. Попробуйте консоль открывать от имени администратора, либо же скомпилированный файл, не знаю как у вас )
Но вполне возможно, что есть защита в некоторых играх, например на одном из серверов линейки действительно не удалось так просто обойти защиту, видимо антикликер какой-то стоит у них.
 

Monotik

One Level
03.09.2020
24
0
BIT
0
Какая ОС у вас? Если русская Windows 7, то буквы вообще могут не печататься. Это проблема знакома разработчикам.
Незнаю актуально ли это , но если вставить код функцию переключения раскладки клавиатуры на другую тогда можно писать на Руском , если использовать write(“rjlt,fg”) оно будет нажимать эти клавиши но писать будет на русском , и напишет «кодебай»
 

she-bang

Green Team
24.04.2018
13
1
BIT
9
Функция position()
.....
...

..
Также можем занести в переменные:
x, y = pyautogui.size()
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!