Здравствуйте, гость ( Вход | Регистрация )

3 страниц V < 1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Arduino, Нажатия мыши и клавиатуры в обход защиты от кликеров
cirus
сообщение 19.1.2021, 3:39
Сообщение #21


**********

Elder
Сообщений: 3.166
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 20093
Пользователь №: 16.971
Возраст: 29



Цитата
А вот в ручную все же можно повесить порт или пилота - частым запуском

Тут и стараться не надо. Остановка скрипта при открытом порте и после этого потребуется перезапуск пилота.

Можно ещё длл попробовать, но в скорее всего ничего не изменится, т. к. в ней тот же самый код.
Прикрепленный файл  Arduino.zip ( 101,33 килобайт ) Кол-во скачиваний: 27

Архив распаковать и закинуть в папку с пилотом. Тестил только на win10.
Пример использования:
код
Код
--lua
local ffi = require("ffi")
log 'clear' log 'mode compact'
local hw = ffi.load('Arduino.dll')

ffi.cdef[[
    int get_port(int VID, int PID);
    int set_port(int com);
    int set_delay_mouse(int ms);
    int set_delay_mousemove(int ms);
    int set_offset_mousemove(int step);
    int set_random_delay_mouse(int rand);
    int mouse_move(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)
hw.set_delay_mouse (20) -- установить паузу между нажатиями клавиш мыши
hw.set_random_delay_mouse(10) -- установить рандом между нажатиями клавиш мыши от 0 до 9 мсек
hw.set_offset_mousemove(4) -- шаг перемещения курсора, чем больше тем быстрее перемещается
hw.set_delay_mousemove(2) -- установить паузу между каждый шагом перемещения мыши, чем меньше, тем быстрее перемещается

hw.mouse_move (651, 225) -- переместить мышь
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
KotMC
сообщение 19.1.2021, 23:06
Сообщение #22


**

Neophyte
Сообщений: 29
Регистрация: 10.1.2021
Группа: Пользователи
Наличность: 114
Пользователь №: 19.851
Возраст: 36



Цитата(cirus @ 18.1.2021, 13:16) *

KotMC, этот файл в папку с пилотом закиньте


Этот модуль можно использовать вместо , модуля из шапки?
Список функций для него не меняется?

Зависания пилота происходили скорее всего из-за ноутбука. На двух из трех usb портов работает с рандомными завываниями, на одном более менее стабильно. Проверил на других компьютерах - пилот, модуль, ардуино, скрипт работаю нормально.

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.1.2021, 23:46
Сообщение #23


**********

Elder
Сообщений: 3.166
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 20093
Пользователь №: 16.971
Возраст: 29



Цитата
Этот модуль можно использовать вместо , модуля из шапки?

Можно. И не только в пилоте, а любой другой программе, которая может подключать библиотеки.
Цитата
Список функций для него не меняется?

Вызов некоторых функций отличается.
Список функций Arduino.dll
Код
--lua
local ffi = require("ffi")
local hw = ffi.load('Arduino.dll')

ffi.cdef[[
    int get_port (int vid, int pid);
    int set_port (int COMport);
    int set_delay_key (int ms);
    int set_delay_mouse (int ms);
    int set_delay_mousemove(int ms);
    int set_offset_mousemove(int step);
    int set_random_delay_key(int rand);
    int set_random_delay_mouse(int rand);

    int key (int code);
    int key_down (int code);
    int key_up (int code);
    int text (const char* text);

    int mouse_move (int x, int y);
    int mouse_click (int button);
    int mouse_click_dbl (int button);
    int mouse_left (int x, int y);
    int mouse_right (int x, int y);
    int mouse_middle (int x, int y);

    int mouse_left_dbl (int x, int y);
    int mouse_right_dbl (int x, int y);
    int mouse_middle_dbl (int x, int y);

    int mouse_left_down (int x, int y);
    int mouse_right_down (int x, int y);
    int mouse_middle_down (int x, int y);

    int mouse_left_up (int x, int y);
    int mouse_right_up (int x, int y);
    int mouse_middle_up (int x, int y);

    int mouse_drag_left (int x, int y, int x2, int y2);
    int mouse_drag_right (int x, int y, int x2, int y2);

    int mouse_wheel_up (int x, int y, int count);
    int mouse_wheel_down (int x, int y, int count);
]]

Т. е. вместо hw.mouse.move (651, 225) надо hw.mouse_move (651, 225).
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
KotMC
сообщение 20.1.2021, 0:17
Сообщение #24


**

Neophyte
Сообщений: 29
Регистрация: 10.1.2021
Группа: Пользователи
Наличность: 114
Пользователь №: 19.851
Возраст: 36



Про Arduino.dll понятно, а модуль Arduino.lua из "сообщения 17", чем отличается от модуля из шапки?
Только выводом информации в лог об открытии закрытии порта или еще чем-то?
Его тоже можно использовать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 20.1.2021, 0:36
Сообщение #25


**********

Elder
Сообщений: 3.166
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 20093
Пользователь №: 16.971
Возраст: 29



Цитата
а модуль Arduino.lua из "сообщения 17", чем отличается от модуля из шапки?

Только вывод в лог добавлен.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kyja
сообщение 28.1.2021, 1:32
Сообщение #26


***

Novice
Сообщений: 59
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 324
Пользователь №: 18.164



Подскажите пожалуйста как можно решить проблему крайне медленной работы на vmware workstation 16?
Фактически все работает но время выполнения просто огромное, на virtualbox такой проблемы нету вообще там все как на обычном пк все отрабатывает согласно задержкам
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kyja
сообщение 1.2.2021, 1:28
Сообщение #27


***

Novice
Сообщений: 59
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 324
Пользователь №: 18.164



Цитата(kyja @ 28.1.2021, 1:32) *

Подскажите пожалуйста как можно решить проблему крайне медленной работы на vmware workstation 16?
Фактически все работает но время выполнения просто огромное, на virtualbox такой проблемы нету вообще там все как на обычном пк все отрабатывает согласно задержкам

Если кому то интересно то для vmware это решилось с помощью USB over Network офсайт но так же она есть на торентах (странно конечно что родное подключение от vmware работает хуже чем стороний софт при по сути одинаковой логике проброса юсб у обоих через tcp/ip если не ошибаюсь) возможно это глюк именно для arduino потому что если замерить скорость флешки через CrystalDiskMark то разница у хоста и виртаулки будет всего 5-15% но проброшенный arduino работает в ~500 раз медленней чем на хосте

И еще вопрос вомзожно ли подключатся не через
Код
hw.com = hw.get_port (2341, 8036)    -- указать vid и pid ардуино

vid и pid а через например номер com порта?
у них ведь у всех он одинаков и если запустить несколько пилотов он ведь не поймет к какому именно устройству надо подсоединятся


Код
--lua
require"luaposh";hw=require"arduino";log"clear"

hw.com = PScode('R',{[[$Return=Get-ArduinoPort]]})
if type(hw.com) ~= "number" then
    log("ERROR\n"..hw.com)
    end_script()
end

hw.mouse.move(400, 200)

Или это и есть способ подключатся именно к определенному com порту? (у меня не получилось)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.2.2021, 1:42
Сообщение #28


**********

Elder
Сообщений: 3.166
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 20093
Пользователь №: 16.971
Возраст: 29



Цитата
вомзожно ли подключатся не через
hw.com = hw.get_port (2341, 8036) -- указать vid и pid ардуино
vid и pid а через например номер com порта?

Код
hw.com = 3  -- 3й порт
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kyja
сообщение 1.2.2021, 1:49
Сообщение #29


***

Novice
Сообщений: 59
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 324
Пользователь №: 18.164



Цитата(cirus @ 1.2.2021, 1:42) *

Код
hw.com = 3  -- 3й порт


Большое спасибо
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kyja
сообщение 9.2.2021, 22:21
Сообщение #30


***

Novice
Сообщений: 59
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 324
Пользователь №: 18.164



Подскажите а как используя Arduino.dll
отправить нажатие кнопок
Код
hw.key (hw.enter)   -- нажать 'Enter'
hw.text ('Hello Привет')  -- напечатать текст
hw.key ('V')    -- нажать Shift+'v'

Enter получилось так
Код
hw.key (0xB0) 

а вот обычные буквы вообще не понял
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 10.2.2021, 0:05
Сообщение #31


*****

Старший модератор UO Pilot
Сообщений: 479
Регистрация: 19.12.2017
Группа: Модераторы
Наличность: 3415
Пользователь №: 18.746



Цитата(kyja @ 9.2.2021, 22:21) *

обычные буквы вообще не понял

Код
hw.key ('k')    -- нажать клавишу 'k'

Так не отправляется?
Выложите код, который запускаете, но не происходят нажатия клавиш.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kyja
сообщение 10.2.2021, 0:20
Сообщение #32


***

Novice
Сообщений: 59
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 324
Пользователь №: 18.164



скрипт
Код
 --lua
local ffi = require("ffi")
local hw = ffi.load('Arduino.dll')

ffi.cdef[[
int get_port (int vid, int pid);
    int get_port (int vid, int pid);
    int set_port (int COMport);
    int set_delay_key (int ms);
    int set_delay_mouse (int ms);
    int set_delay_mousemove(int ms);
    int set_offset_mousemove(int step);
    int set_random_delay_key(int rand);
    int set_random_delay_mouse(int rand);

    int key (int code);
    int key_down (int code);
    int key_up (int code);
    int text (int text);

    int mouse_move (int x, int y);
    int mouse_click (int button);
    int mouse_click_dbl (int button);
    int mouse_left (int x, int y);
    int mouse_right (int x, int y);
    int mouse_middle (int x, int y);

    int mouse_left_dbl (int x, int y);
    int mouse_right_dbl (int x, int y);
    int mouse_middle_dbl (int x, int y);

    int mouse_left_down (int x, int y);
    int mouse_right_down (int x, int y);
    int mouse_middle_down (int x, int y);

    int mouse_left_up (int x, int y);
    int mouse_right_up (int x, int y);
    int mouse_middle_up (int x, int y);

    int mouse_drag_left (int x, int y, int x2, int y2);
    int mouse_drag_right (int x, int y, int x2, int y2);

    int mouse_wheel_up (int x, int y, int count);
    int mouse_wheel_down (int x, int y, int count);
]]

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)
hw.set_delay_mouse (95)   -- установить паузу между нажатиями клавиш мыши
hw.set_random_delay_mouse(15)  -- установить рандом между нажатиями клавиш мыши от 0 до 15 мсек
hw.set_offset_mousemove(6)  -- шаг перемещения курсора, чем больше тем быстрее перемещается
hw.set_delay_mousemove(6)  -- установить паузу между каждый шагом перемещения мыши, чем меньше, тем быстрее перемещается
hw.set_delay_key (325) -- установить задержку нажатий клавиатуры
hw.set_random_delay_key(95) -- рандом в мсек между нажатием и отпусканием клавиш клавиатуры

wait (3000 + math.random (20))


hw.key ('k')   -- нажать
wait (75 + math.random (30))
hw.key (0xB0)   -- нажать
wait (375 + math.random (30))


В таком виде тоже не работает
hw.key (k) -- нажать
но все что Hexadecimal значение отлично проходят


Эскизы прикрепленных изображений
Прикрепленное изображение
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
KotMC
сообщение 10.2.2021, 0:44
Сообщение #33


**

Neophyte
Сообщений: 29
Регистрация: 10.1.2021
Группа: Пользователи
Наличность: 114
Пользователь №: 19.851
Возраст: 36



Цитата

Вызов некоторых функций отличается.
Список функций Arduino.dll


Список функций Arduino.dll
Код
--lua
local ffi = require("ffi")
local hw = ffi.load('Arduino.dll')

ffi.cdef[[
int get_port (int vid, int pid);
int set_port (int COMport);
int set_delay_key (int ms);
int set_delay_mouse (int ms);
int set_delay_mousemove(int ms);
int set_offset_mousemove(int step);
int set_random_delay_key(int rand);
int set_random_delay_mouse(int rand);

int key (int code);
int key_down (int code);
int key_up (int code);
int text (int text);

int mouse_move (int x, int y);
int mouse_click (int button);
int mouse_click_dbl (int button);
int mouse_left (int x, int y);
int mouse_right (int x, int y);
int mouse_middle (int x, int y);

int mouse_left_dbl (int x, int y);
int mouse_right_dbl (int x, int y);
int mouse_middle_dbl (int x, int y);

int mouse_left_down (int x, int y);
int mouse_right_down (int x, int y);
int mouse_middle_down (int x, int y);

int mouse_left_up (int x, int y);
int mouse_right_up (int x, int y);
int mouse_middle_up (int x, int y);

int mouse_drag_left (int x, int y, int x2, int y2);
int mouse_drag_right (int x, int y, int x2, int y2);

int mouse_wheel_up (int x, int y, int count);
int mouse_wheel_down (int x, int y, int count);
]]

Т. е. вместо hw.mouse.move (651, 225) надо hw.mouse_move (651, 225).


Если не ошибаюсь здесь ответ.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kyja
сообщение 10.2.2021, 0:52
Сообщение #34


***

Novice
Сообщений: 59
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 324
Пользователь №: 18.164



Цитата(KotMC @ 10.2.2021, 0:44) *

Если не ошибаюсь здесь ответ.

Это мышка с ней проблем нет, и Hexadecimal значениями тоже все ок но вот именно просто кнопка k
(я бы и Hexadecimal заменил все клавиши но не смог найти на сайте ардуино список по всем символам)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
KotMC
сообщение 10.2.2021, 1:11
Сообщение #35


**

Neophyte
Сообщений: 29
Регистрация: 10.1.2021
Группа: Пользователи
Наличность: 114
Пользователь №: 19.851
Возраст: 36



Сайт ардуино отправляет к этой табличке asciitable.com за доп кодами и их описанием.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 10.2.2021, 1:16
Сообщение #36


*****

Старший модератор UO Pilot
Сообщений: 479
Регистрация: 19.12.2017
Группа: Модераторы
Наличность: 3415
Пользователь №: 18.746



Сейчас установлю arduino, попробую dll.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 10.2.2021, 1:41
Сообщение #37


*****

Старший модератор UO Pilot
Сообщений: 479
Регистрация: 19.12.2017
Группа: Модераторы
Наличность: 3415
Пользователь №: 18.746



Пробуйте. cirus придёт, может что подправит.
--lua
log 'clear';log 'mode compact'
ffi = require("ffi")
hw  = ffi.load('Arduino.dll')

ffi.cdef[[
int get_port(int VIDint PID);
int set_port(int com);
int key(int code);
int text(const chartext);
]]

com = hw.get_port(23418036)
if com < 1 then
log ('error = ' .. tostring(com))
end_script ()
end
hw.set_port(com)
--//
exec ("notepad.exe")
wait(1000)
showwindow(findwindow ("Блокнот")[1][1])
wait(100)
hw.key(0x4B-- Нажать K
wait(500)
hw.text(' Hello Привет'-- напечатать текст


Сообщение отредактировал Fors1k - 10.2.2021, 1:57


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 10.2.2021, 2:00
Сообщение #38


**********

Elder
Сообщений: 3.166
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 20093
Пользователь №: 16.971
Возраст: 29



Цитата
hw.key(0x4B) -- Нажать K

Можно так сделать:
Код
local enter = 0xB0
function _key(symbol)
    hw.key(symbol:byte())
end

_key('k')   -- нажать k
_key('Z')   -- нажать Shift+z
hw.key(enter)    -- нажать enter
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kyja
сообщение 10.2.2021, 23:13
Сообщение #39


***

Novice
Сообщений: 59
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 324
Пользователь №: 18.164



Спасибо да табличка с кодами решила проблемы а function _key(symbol) так вообще идеально.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kyja
сообщение 19.2.2021, 0:50
Сообщение #40


***

Novice
Сообщений: 59
Регистрация: 29.10.2016
Группа: Пользователи
Наличность: 324
Пользователь №: 18.164



Подскажите почему может не срабатывать рандом смешение у hw.mouse.move, пробовал такие варианты не срабатывает не один

Код
local x, y = 37, 533, 50, 50, -50, -52 
hw.mouse.move (x, y)


Код
hw.mouse.move (37, 533, 50, 50, -50, -52) 


Код
hw.mouse.move (39, 537, 5, 10, -7, -12) 
local x, y = mouse_pos ()
hw.mouse.left (x, y, 50, 50, -50, -50)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

3 страниц V < 1 2 3 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 6.3.2021, 4:10
Designed by Nickostyle