|
|
|
Arduino, Нажатия мыши и клавиатуры в обход защиты от кликеров |
|
|
kyja |
6.5.2021, 0:55
|
Novice
Сообщений: 85
Регистрация: 29.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.164
|
Цитата(KotMC @ 23.2.2021, 17:11) "Обрамил" всё что возможно выводом в лог, получается следующие. Пилот зависает (открывает порт без закрытия) всегда в одном и том же месте: Код 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. Пробовали убрать из кода пилота эти строки и убрать из arduino.lua Код export_array.delay_key = 120 -- пауза между нажатиями клавиш. Только чтение, изменение через set_delay_key. export_array.delay_mouse = 90 -- пауза между нажатием и отпусканием кнопок мыши. Только чтение, изменение через set_delay_mouse. export_array.delay_mousemove = 35 -- пауза при перемещении курсора export_array.offset_mousemove = 30 -- смещение курсора по x и y при перемещении мыши export_array.random_delay_key = 0 -- рандом между нажатием и отпусканием клавиши клавиатуры export_array.random_delay_mouse = 0 -- рандом между нажатием и отпусканием клавиши мыши оставить только export_array.com = 3 -- номер порта А сами значения прописывать именно в скетче? Код int KEYBOARD_DELAY = 120; int MOUSE_DELAY = 90; int MOUSE_MOVE_DELAY = 35; int MOUSE_MOVE_OFFSET = 30; int RANDOM_KEY = 30; int RANDOM_MOUSE = 20; Вообще там есть закономерность при которой пилот виснет на этих строках Она в типе подключения самого ардуино но я пока не уловил точный принцип как пойму отпишусь В моем случаи это подключение к vmware Но скорее всего к обычному пк тот же принцип будет Код 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) -- рандом в мсек между нажатием и отпусканием клавиш клавиатуры
|
|
|
|
KotMC |
6.5.2021, 20:56
|
Neophyte
Сообщений: 34
Регистрация: 10.1.2021 Группа: Пользователи Наличность: 0
Пользователь №: 19.851
Возраст: 36
|
цитата
Цитата(kyja @ 6.5.2021, 0:55) Пробовали убрать из кода пилота эти строки и убрать из arduino.lua Код export_array.delay_key = 120 -- пауза между нажатиями клавиш. Только чтение, изменение через set_delay_key. export_array.delay_mouse = 90 -- пауза между нажатием и отпусканием кнопок мыши. Только чтение, изменение через set_delay_mouse. export_array.delay_mousemove = 35 -- пауза при перемещении курсора export_array.offset_mousemove = 30 -- смещение курсора по x и y при перемещении мыши export_array.random_delay_key = 0 -- рандом между нажатием и отпусканием клавиши клавиатуры export_array.random_delay_mouse = 0 -- рандом между нажатием и отпусканием клавиши мыши оставить только export_array.com = 3 -- номер порта А сами значения прописывать именно в скетче? Код int KEYBOARD_DELAY = 120; int MOUSE_DELAY = 90; int MOUSE_MOVE_DELAY = 35; int MOUSE_MOVE_OFFSET = 30; int RANDOM_KEY = 30; int RANDOM_MOUSE = 20; Вообще там есть закономерность при которой пилот виснет на этих строках Она в типе подключения самого ардуино но я пока не уловил точный принцип как пойму отпишусь В моем случаи это подключение к vmware Но скорее всего к обычному пк тот же принцип будет Код 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) -- рандом в мсек между нажатием и отпусканием клавиш клавиатуры У меня зависания в процессе работы скрипта ушли. По не знанию или не опытности, в первых моих скриптах "конфигурационные" параметры относящиеся к ардуино, я прописал в основном цикле который примерно раз в минуту начинался с начала. И как я понимаю из за частого установки этих параметров у меня были проблемы. Сейчас я эти параметры объявляю один раз в начале скрипта все циклы получаются за ними и вроде проблем нет. Остался всего один момент, но он не критичен для меня, при запуске скрипта 1 раз из 100, пилот "вешается"(наверняка где-то, я опять напортачил в написание скрипта), но повторюсь если скрипт запустился он работает очень долго без зависаний и т.д.. Доходило до 2х недель без прерывной работы, наверняка могло быть и дольше, скрипт выключил сам. kyja Спасибо, за участие!
|
|
|
|
kyja |
6.5.2021, 21:23
|
Novice
Сообщений: 85
Регистрация: 29.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.164
|
Цитата(KotMC @ 6.5.2021, 20:56) 1 раз из 100, пилот "вешается"
У вас скрипт работает в одной вкладке или например используется start_script (2, "wait") По окончанию 2 возврат в 1 скрипт (2 скрипт тоже ардуиновский) Или просто скрипт из одной вкладки?
|
|
|
|
Crocotea |
19.8.2021, 20:47
|
Novice
Сообщений: 51
Регистрация: 30.10.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.787
|
В свзяи с чем может быть проблема? в диспетчере устройств отображается корректно микро ком 8 в самом адруино выставил свою плату и порт Гет порт вписал свой из "получить инф о плате" Код 20:41:23 6 (test.txt, 0): a runtime error. 59: attempt to call field 'Key' (a nil value) --lua local hw = require 'arduino' hw.com = hw.get_port (2341, 8037) -- указать vid и pid ардуино if hw.com < 1 then -- если номер порта меньше 1 log ('err Код --lua local hw = require 'arduino' hw.com = hw.get_port (2341, 8037) -- указать 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)
|
|
|
|
kyja |
24.8.2021, 12:35
|
Novice
Сообщений: 85
Регистрация: 29.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.164
|
Подскажите как определить зажатие клавиш при использование ардуино беру код с https://forum.uokit.com/index.php?showtopic...%E0%E2%E8%F8%E8Код --lua log 'clear' log 'mode compact' wait (627 + math.random (30)) --local hw = require'arduino' 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 --функция рандома --проверка клавиш do local back = package.path package.path = "luaPlugins\\winapi\\?.lua;"..package.path setfenv(1, require'winapi') require[[winapi.keyboard]] package.path = back end --проверка клавиш
-- проверка нажата ли клавиша Z while 1 do local state = GetKeyState(90) -- или GetKeyState(0x5A) if state then log ("Z нажата") else log ("Z не нажата") end wait (100) end
При закоментированом --local hw = require'arduino' все отлично работает Если раскоментировать то выдает ошибку
Эскизы прикрепленных изображений
|
|
|
|
kyja |
29.8.2021, 23:55
|
Novice
Сообщений: 85
Регистрация: 29.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.164
|
Цитата(cirus @ 24.8.2021, 13:11) Код --lua local ffi = require("ffi") ffi.cdef[[ short GetAsyncKeyState(int vKey); ]] log 'clear' log 'mode compact' local hw = require'arduino'
-- проверка нажата ли клавиша Z while 1 do local state = ffi.C.GetAsyncKeyState(90) if state ~= 0 then log ("Z нажата") else log ("Z не нажата") end wait (100) end Почему то периодически но крайне редко, не определяет что правая кнопка не зажалась Код ------------------------зажимаю правую local x, y = mouse_pos () wait (325 + math.random (30)) hw.mouse.right_down (x, y) -- зажать правую в позиции wait (325 + math.random (30)) ------------------------зажимаю правую
-------------проверка что правая зажалась--------- local state = ffi.C.GetAsyncKeyState(2) if state ~= 0 then --log ("нажата") else ------------------------зажимаю правую local x, y = mouse_pos () wait (325 + math.random (30)) hw.mouse.right_down (x, y) -- зажать правую в позиции wait (325 + math.random (30)) ------------------------зажимаю правую end -------------проверка что правая зажалась---------
В тестах всегда все ок а вот когда скрипт работает иногда не проходит проверка Не хватает задержек или какой то еще вариант может быть?
|
|
|
|
1dark1 |
5.10.2021, 12:38
|
Registred
Сообщений: 4
Регистрация: 4.2.2013 Группа: Пользователи Наличность: 0
Пользователь №: 15.757
Возраст: 25
|
Привет. Можете сказать как правильно составить команды для отправки через cmd Код работает Код не работает (пример на любой букве если можно) Код мышь двигается только вниз(если поставить минус(-100,100) то верх но не влево вправо),как двигать в любом направлении Код тут я даже не знаю что вставлять после '6' пробывал цифры и (Mouse.click) никакой реакции Вообщем если не затруднит напишите , может еще кому понадобиться тоже.
|
|
|
|
cirus |
5.10.2021, 13:01
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26576
Пользователь №: 16.971
Возраст: 29
|
В файле arduino.lua можно посмотреть что отправляет нужная функция. Цитата пример на любой букве если можно Код Напишет букву t. 1 - означает нажать клавишу, 116 - это код клавиши. Цитата мышь Код Переместит курсор на 300 пикселей вправо и на 200 вниз. Первый + означает что курсор смещается вправо, - будет означать влево, второй + означает смещать вниз, - это вверх. Число 19660700 считается так: 300*0xFFFF+200 или так если понятнее 300*65535+200. Цитата Mouse.click Код Клик левой кнопкой мыши. 62 правой, 64 средней.
|
|
|
|
1dark1 |
5.10.2021, 21:27
|
Registred
Сообщений: 4
Регистрация: 4.2.2013 Группа: Пользователи Наличность: 0
Пользователь №: 15.757
Возраст: 25
|
Цитата(cirus @ 5.10.2021, 13:01) Код Переместит курсор на 300 пикселей вправо и на 200 вниз. Первый + означает что курсор смещается вправо, - будет означать влево, второй + означает смещать вниз, - это вверх. Число 19660700 считается так: 300*0xFFFF+200 или так если понятнее 300*65535+200. Спасибо за примеры (буквы сам я пробывал с "0x116")появился только вопрос по скорости перемещения мыши его каким образом регулировать?
|
|
|
|
cirus |
10.11.2021, 1:57
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26576
Пользователь №: 16.971
Возраст: 29
|
Цитата Есть что-то похожее на это: hw.key (hw.F1)? Можно добавить в файл arduino.lua: Код export_array.KEYPAD_4 = 228 Либо в скрипте: Код тогда вызов будет таким: Код Коды клавиш: Код local KEYPAD_0 = 234 local KEYPAD_1 = 225 local KEYPAD_2 = 226 local KEYPAD_3 = 227 local KEYPAD_4 = 228 local KEYPAD_5 = 229 local KEYPAD_6 = 230 local KEYPAD_7 = 231 local KEYPAD_8 = 232 local KEYPAD_9 = 233
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|