|
Arduino, Нажатия мыши и клавиатуры в обход защиты от кликеров |
|
|
cirus |
14.12.2020, 0:24
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26801
Пользователь №: 16.971
Возраст: 29
|
Скетч и модуль lua:
Arduino.zip ( 7,33 килобайт )
Кол-во скачиваний: 255Драйвер для ардуино:
CH341SER.zip ( 185,9 килобайт )
Кол-во скачиваний: 725Arduino позволяет эмулировать нажатия клавиш клавиатуры и мыши, в том числе в приложениях, которые блокируют нажатия кликеров. Может поворачивать камеру в шутерах и играх, в которых камера поворачивается с зажатой правой кнопкой мыши. Дополнительная информация по обходу защиты в MMORPG. Работает только с активным окном.
Необходимое устройство и установка ПО
1. Требуется плата Arduino micro или Arduino Leonardo. Заказать можно на Aliexpress. 2. Скачать и установить Arduino IDE. https://www.arduino.cc/en/software ( Windows Win7 and newer) 3. Скачать и установить драйвер CH341SER (ссылка вначале темы). 4. Открыть Arduino IDE, пункт меню 'Инструменты', выбрать тип платы и порт. 5. Скачать архив arduino.zip (ссылка вначале темы) и извлечь его. Файл arduino.lua закинуть в папку, в которой находится exe пилота. Скетч загрузить в ардуино. Для этого скопировать содержимое файла Скетч.txt, вставить в Arduino IDE, нажать кнопку 'Загрузка'. Требования
Пилот версии 2.41 или выше. Запускать от администратора. Для работы функций мыши нужно в настройках мыши снять галочку 'Включить повышенную точность установки указателя'. В функцию get_port (2341, 8036) нужно передавать vid и pid ардуино. Узнать их можно в Arduino IDE, пункт меню 'Инструменты', 'Получить информацию о плате'. При переполнении буфера, хотя такого не должно быть, 3 секунды будет гореть встроенный светодиод L. В этом случае нужно увеличить паузы между нажатиями клавиш мыши/клавиатуры. Все координаты в командах мыши указывать абсолютные, т. е. относительно левого верхнего угла экрана.
Список функций
get_port (vid, pid) -- узнать в каком com порте находится ардуино
set_delay_key (ms) -- установить задержку нажатий клавиатуры set_delay_mouse (ms) -- установить задержку нажатий мыши set_delay_mousemove(ms) -- установить паузу в мсек между каждым шагом перемещения курсора, чем меньше, тем быстрее перемещается курсор set_offset_mousemove(step) -- шаг перемещения курсора от 1 до 127, чем больше, тем быстрее перемещается курсор. set_random_delay_key(random) -- рандом в мсек между нажатием и отпусканием клавиш клавиатуры set_random_delay_mouse(random) -- рандом в мсек между нажатием и отпусканием клавиш
key (code) -- нажать клавишу клавиатуры text (text) -- отослать текст, в том числе русские символы key_down (code) -- зажать (не отжимая) клавишу клавиатуры key_up (code) -- отжать клавишу клавиатуры
mouse.move (x, y) -- переместить мышь mouse.click (x, y, button) -- кликнуть мышью, button должен содержать код клавиши мыши (смотреть список клавиш) mouse.left (x, y) -- клик левой кнопкой mouse.right (x, y) -- клик правой кнопкой mouse.middle (x, y) -- клик средней кнопкой mouse.dbl (x, y, button) -- двойной клик, button должен содержать код клавиши мыши mouse.left_dbl (x, y) -- двойной клик левой кнопкой мыши mouse.right_dbl (x, y) -- двойной клик правой кнопкой мыши mouse.middle_dbl (x, y) -- двойной клик средней кнопкой мыши mouse.down (x, y, button) -- зажать (не отжимая) кнопку мыши, button должен содержать код клавиши мыши mouse.left_down (x, y) -- зажать (не отжимая) левую кнопку мыши mouse.right_down (x, y) -- зажать (не отжимая) правую кнопку мыши mouse.middle_down (x, y) -- зажать (не отжимая) среднюю кнопку мыши mouse.up (x, y, button) -- отжать кнопку мыши, button должен содержать код клавиши мыши mouse.left_up (x, y) -- отжать левую кнопку мыши mouse.right_up (x, y) -- отжать правую кнопку мыши mouse.middle_up (x, y) -- отжать среднюю кнопку мыши mouse.drag (x, y, x2, y2) -- зажать левую кнопку мыши в точке x y, переместить в точку x2 y2 mouse.wheel_up (x, y, count) -- прокручивание колёсика мыши вверх, count - насколько щелчков прокрутить mouse.wheel_down (x, y, count) -- прокручивание колёсика мыши вниз, count - насколько щелчков прокрутить
Список многосимвольных клавиш
mouse_left_button = 1 mouse_right_button = 2 mouse_middle_button = 4
left_ctrl = 0x80 left_shift = 0x81 left_alt = 0x82 left_gui = 0x83 right_ctrl = 0x84 right_shift = 0x85 right_alt = 0x86 right_gui = 0x87 up_arrow = 0xDA down_arrow = 0xD9 left_arrow = 0xD8 right_arrow = 0xD7 backspace = 0xB2 tab = 0xB3 enter = 0xB0 esc = 0xB1 insert = 0xD1 delete = 0xD4 page_up = 0xD3 page_down = 0xD6 home = 0xD2 ["end"] = 0xD5 caps_lock = 0xC1 f1 = 0xC2 f2 = 0xC3 f3 = 0xC4 f4 = 0xC5 f5 = 0xC6 f6 = 0xC7 f7 = 0xC8 f8 = 0xC9 f9 = 0xCA f10 = 0xCB f11 = 0xCC f12 = 0xCD F1 = 0xC2 F2 = 0xC3 F3 = 0xC4 F4 = 0xC5 F5 = 0xC6 F6 = 0xC7 F7 = 0xC8 F8 = 0xC9 F9 = 0xCA F10 = 0xCB F11 = 0xCC F12 = 0xCD
Пример использования клавиатуры
Код --lua local hw = require'arduino' hw.com = hw.get_port (2341, 8036) -- указать vid и pid ардуино if hw.com < 1 then -- если номер порта меньше 1 log ('error = ' .. tostring(hw.com)) -- код ошибки, если 0 значит устройство с указанными vip и pid не найдено end_script () end hw.set_delay_key (20) -- установить паузу между нажатиями клавиш клавиатуры hw.set_random_delay_key(10) -- установить рандом между нажатием и отпускание клавиш от 0 до 9 мсек -- т. е. между нажатием и отпусканием клавиши будет пауза от 20 до 29 мсек
wait (3000) -- пауза 3 секунды чтобы переключиться на нужное окно hw.key ('k') -- нажать клавишу 'k' hw.key (hw.enter) -- нажать 'Enter'
wait (1000) -- пауза 1 сек.
hw.key_down ('s') -- зажать клавишу 's' wait (3000) -- пауза 3 сек., при этом клавиша будет зажата hw.key_up ('s') -- отпустить клавишу 's' hw.key (hw.enter) -- нажать 'Enter'
hw.text ('Hello Привет') -- напечатать текст hw.key ('V') -- нажать Shift+'v' Пример использования мыши
Код --lua local hw = require'arduino' hw.com = hw.get_port (2341, 8036) -- указать vid и pid ардуино if hw.com < 1 then -- если номер порта меньше 1 log ('error = ' .. tostring(hw.com)) -- код ошибки end_script () end hw.set_delay_mouse (20) -- установить паузу между нажатиями клавиш мыши hw.set_random_delay_mouse(10) -- установить рандом между нажатиями клавиш мыши от 0 до 9 мсек -- т. е. между нажатием и отпусканием кнопки мыши будет пауза от 20 до 29 мсек. hw.set_offset_mousemove(4) -- шаг перемещения курсора, чем больше тем быстрее перемещается hw.set_delay_mousemove(2) -- установить паузу между каждый шагом перемещения мыши, чем меньше, тем быстрее перемещается
hw.mouse.left (200, 100) -- клик левой кнопкой мыши в координатах 200, 100 hw.mouse.right (200, 100) -- клик правой кнопкой мыши wait (3000) -- пауза 3 секунды hw.mouse.left_dbl (35, 35) -- двойной клик левой кнопкой мыши wait (2000) hw.mouse.left_down (200, 200) -- зажать левую кнопку мыши wait(500) hw.mouse.left_up (900, 300) -- отпустить левую кнопку мыши Сообщение отредактировал cirus - 11.7.2023, 2:17
|
|
|
|
|
|
Ответов(40 - 59)
cirus |
19.2.2021, 1:46
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26801
Пользователь №: 16.971
Возраст: 29
|
Цитата пробовал такие варианты не срабатывает не один Потому что они все неправильные. Код --lua math.randomseed(os.clock()) function rand(x, y, x_plus, y_plus, x_minus, y_minus) return x+math.random(x_minus, x_plus), y+math.random(y_minus, y_plus) end
local x, y = rand(37, 533, 50, 50, -50, -52) log (x, y)
|
|
|
|
kyja |
23.2.2021, 12:03
|
Novice
Сообщений: 87
Регистрация: 29.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.164
|
Тоже периодически сталкивался с зависаниями но у меня не чистое подключение а проброс в виртуалки. Из команд как по крайне мере мне показалось это все что связано с зажатиями hw.key_down ('h') отказался от них и вроде лучше Так же не провереный на длинной дистанции но тоже непонятно почему дольще работает это покдлючение к порту а не hw.com = hw.get_port (2341, 8036) а hw.com = 6 И не dll а .lua через dll очень не долго работает Пробовал и нам ram диск класть пилота но это вообще ничего не дало вроде И конечно 10 винда сборок пробовал много разных остановился на 21h1 на 7 вообще печально все работает Подскажите пожалуйста как сместить курсор в лево/право на 3 пикселя относительно позиции курсора, на просто lua работал такой вариант c ардуино не работает такое смешение влево/вправо всегда тянет вверх скрипт
Код wait (70 + math.random (100)) hw.mouse.move (1071, 472) -- было move_smooth (1071, 472) wait (125 + math.random (20)) local x, y = mouse_pos () hw.mouse.right_down (x, y) -- было right_down (x, y) wait (125 + math.random (20))
if color(1791, 610 ) == 3951049 then local x, y = mouse_pos () clickoffsetx (3 + math.random (2)) hw.mouse.move (x, y) --было move_smooth (x, y) local x, y = mouse_pos () end
local x, y = mouse_pos () hw.mouse.right_up (x, y) -- было right_up (x, y)
|
|
|
|
KotMC |
23.2.2021, 13:02
|
Neophyte
Сообщений: 34
Регистрация: 10.1.2021 Группа: Пользователи Наличность: 0
Пользователь №: 19.851
Возраст: 36
|
Сам спросил, сам отвечу для моего применения можно просто удалить лишние строки в скрипте. Работать будет точно также как в первом варианте. было Код hw.mouse_move (arrP[1][1], arrP[1][2]) wait (300 + math.random (100)) hw.mouse_left_down () -- зажать левую кнопку мыши wait (300 + math.random (100)) hw.mouse_move (arrP[1][1], arrP[1][2] + (2 + math.random (3))) wait (300 + math.random (100)) hw.mouse_left_up () -- отжать левую кнопку мыши
стало Код hw.mouse_move (arrP[1][1], arrP[1][2]) wait (300 + math.random (100)) hw.mouse_left_down (arrP[1][1], arrP[1][2]) -- зажать левую кнопку мыши --wait (300 + math.random (100)) --hw.mouse_move (arrP[1][1], arrP[1][2] + (2 + math.random (3))) wait (300 + math.random (100)) hw.mouse_left_up (arrP[1][1], arrP[1][2] + (2 + math.random (3))) -- отжать левую кнопку мыши
Перемещение "зажатого" курсора происходит, и отпускание так же работает. И все же первоначальный вопрос не потерял актуальности Цитата Пилот ругается на не правильный аргумент в строке "hw.mouse_left_down () и hw.mouse_left_up ()", возможно ли сделать клик (зажатие, отпускание), в том месте где уже находится курсор?
|
|
|
|
cirus |
23.2.2021, 13:02
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26801
Пользователь №: 16.971
Возраст: 29
|
Цитата Пилот ругается на не правильный аргумент в строке "hw.mouse_left_down () и hw.mouse_left_up () Потому что надо передавать координаты, в которых зажимать. Смотрите тип и количество передаваемых параметров: Код int mouse_left_down (int x, int y); Цитата возможно ли сделать клик (зажатие, отпускание), в том месте где уже находится курсор? код
Код --lua local ffi = require("ffi") local hw = ffi.load('Arduino.dll')
local MOUSE_LEFT = 1 local MOUSE_RIGHT = 2 local MOUSE_MIDDLE = 4
ffi.cdef[[ int get_port (int vid, int pid); int set_port (int COMport); int mouse_left (int x, int y); int mouse_click (int button); int mouse_left_down (int x, int y); int mouse_left_up (int x, int y); ]]
local com = hw.get_port(2341, 8036) --hint('Номер порта: ' .. tostring(com)) if com < 1 then -- если номер порта меньше 1 log ('error = ' .. tostring(com)) -- код ошибки, если 0 значит устройство с указанными vip и pid не найдено end_script () end hw.set_port(com)
wait(3000)
hw.mouse_click(MOUSE_LEFT) -- клик левой кнопкой мыши в текущих координатах wait(2000)
local x, y = mouse_pos () -- получить текущие координаты курсора hw.mouse_left_down (x, y) -- зажать левую кнопку мыши wait(2000) hw.mouse_left_up (x+300, y-100) -- отпустить левую кнопку мыши
|
|
|
|
KotMC |
23.2.2021, 17:11
|
Neophyte
Сообщений: 34
Регистрация: 10.1.2021 Группа: Пользователи Наличность: 0
Пользователь №: 19.851
Возраст: 36
|
"Обрамил" всё что возможно выводом в лог, получается следующие. Пилот зависает (открывает порт без закрытия) всегда в одном и том же месте: Код hw.set_port(com) hw.set_delay_mouse (100) -- установить паузу между нажатиями клавиш мыши hw.set_random_delay_mouse(50) -- установить рандом между нажатиями клавиш мыши hw.set_offset_mousemove(5) -- шаг перемещения курсора, чем больше тем быстрее перемещается hw.set_delay_mousemove(5) -- установить паузу между каждый шагом перемещения мыши, чем меньше, тем быстрее перемещается hw.set_delay_key (300) -- установить задержку нажатий клавиатуры hw.set_random_delay_key(10) -- рандом в мсек между нажатием и отпусканием клавиш клавиатуры
Проявляется как при использовании луа модуля, так и dll.
|
|
|
|
|
|
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|