Статья Берем под контроль мышь и клавиатуру 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()

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

Азиз

Green Team
30.05.2018
224
74
BIT
0
У меня функция pyautogui.typewrite('dsds') запятые печатает ._.
 
U

utrom

Интересно.
Кто нибудь практиковал "перехват" мыши/клавиатуры с помощью SDR? :)
 

id2746

Green Team
12.11.2016
435
644
BIT
21
Делал аналогичную вещь для "поржать" на VB в excel.
Очень забавно получалось, особенно учитывая что в офисе у всех одинаковые мониторы с одинаковым разрешением:)

Интересно.
Кто нибудь практиковал "перехват" мыши/клавиатуры с помощью SDR? :)
полистай форум. Об этом писал @Ondrik8
 
  • Нравится
Реакции: utrom

1984

Green Team
08.03.2018
137
490
BIT
1
Спасибо, познавательно, как раз изучением Python занялся! :)(y)
 
  • Нравится
Реакции: Debug
M

magicun

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

Debug

Red Team
07.07.2017
217
445
BIT
5
видел продавался донгл универсальный якобы работал с большей частью беспроводных клав. радиус 20-30 метров. к себе его тык софт став на компе гуи скан находит компы с адаптером беспроводника клавы если может цепляет все нашел его через фрики форумы не сохранил не знал к чему теперь наю не могу сам найти.
Нужно посмотреть, можно ли создать подобное самому? Думаю, что на малинке(rasberry) можно)
 
Последнее редактирование:
M

magicun

с развитием ардуино подобных тема может быт освоено
 
  • Нравится
Реакции: Debug
A

Ali113

Почему то не печатает русский текст . win10
c англ все норм:unsure:
 
A

Alex432000

В таком случае надо, чтобы дистанционно какой-нибудь эксперт в этом деле смотрел)
 
Мы в соцсетях:

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