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

Debug

Debug

Grey Team
07.07.2017
157
360
Привет форум 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 (х, у). Не трудно догадаться, что задача этой функции перемещение мыши в определенные координаты. Однако ключом к пониманию этой функции является знание того, как устроен граф координат.
.
Также приложу картинку для понимание принципа работы с координатами:

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


Мы видим, что верхний левый угол имеет координаты (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()) мы получим координаты, которые пригодятся нам для автоклика.
Берем под контроль мышь и клавиатуру Python

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

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

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

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

Напишем две функции - 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()

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

Азиз

Happy New Year
30.05.2018
207
67
У меня функция pyautogui.typewrite('dsds') запятые печатает ._.
 
Азиз

Азиз

Happy New Year
30.05.2018
207
67
Попробую на виртуальной kali
 
  • Нравится
Реакции: Debug
utrom

utrom

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

id2746

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

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

pr0phet

Gold Team
02.04.2018
325
519
1984

1984

Grey Team
08.03.2018
77
133
Спасибо, познавательно, как раз изучением Python занялся! :)(y)
 
  • Нравится
Реакции: Debug
magicun

magicun

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

Debug

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

magicun

Well-known member
06.01.2019
84
8
с развитием ардуино подобных тема может быт освоено
 
  • Нравится
Реакции: Debug
A

Ali113

New member
31.01.2019
1
0
Почему то не печатает русский текст . win10
c англ все норм:unsure:
 
Nevoliashka

Nevoliashka

New member
20.01.2019
1
0
Не работает typewrite винда 10
 
Alex432000

Alex432000

New member
26.02.2019
2
0
В таком случае надо, чтобы дистанционно какой-нибудь эксперт в этом деле смотрел)
 
Мы в соцсетях:  ТелеграмВконтактеДзенФейсбукТвиттерЮтуб