|
|
![Ответить в эту тему](style_images/uokit/t_reply.gif) ![Открыть новую тему](style_images/uokit/t_new.gif) |
Arduino, Нажатия мыши и клавиатуры в обход защиты от кликеров |
|
|
DarkMaster |
8.7.2023, 17:23
|
![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif)
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
![](style_images/uokit/spacer.gif)
|
А через мой дебаг запускал? На какой строке в arduino.lua зависает? Ну либо сам найди номер строки. Там проще будет. Я то думал, что скрипт работает, а железка просто игнорит команды - это сложно без железки диагностировать, а тут уже есть с чем работать. Мне чет кажется оно будет бесконечно крутить: Код repeat COMport = ffi.cast('int', ffi.C.CreateFileA('\\.\\COM' .. tostring(export_array.com), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nil)) if COMport == INVALID_HANDLE_VALUE then wait (1) end until COMport ~= INVALID_HANDLE_VALUE
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Madeus |
8.7.2023, 23:30
|
![](https://forum.uokit.com/uploads/av-19451.gif)
![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif)
Apprentice
Сообщений: 283
Регистрация: 19.11.2019 Группа: Пользователи Наличность: 8479
Пользователь №: 19.451
Возраст: 32
![](style_images/uokit/spacer.gif)
|
Цитата(DarkMaster @ 8.7.2023, 17:23) ![*](style_images/uokit/post_snapback.gif) А через мой дебаг запускал? На какой строке в arduino.lua зависает? Ну либо сам найди номер строки. Там проще будет. Я то думал, что скрипт работает, а железка просто игнорит команды - это сложно без железки диагностировать, а тут уже есть с чем работать. Мне чет кажется оно будет бесконечно крутить: Код repeat COMport = ffi.cast('int', ffi.C.CreateFileA('\\.\\COM' .. tostring(export_array.com), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nil)) if COMport == INVALID_HANDLE_VALUE then wait (1) end until COMport ~= INVALID_HANDLE_VALUE
Запустил, именно этот кусок он и крутит.
|
|
|
|
Madeus |
9.7.2023, 18:27
|
![](https://forum.uokit.com/uploads/av-19451.gif)
![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif)
Apprentice
Сообщений: 283
Регистрация: 19.11.2019 Группа: Пользователи Наличность: 8479
Пользователь №: 19.451
Возраст: 32
![](style_images/uokit/spacer.gif)
|
Цитата(DarkMaster @ 9.7.2023, 16:49) ![*](style_images/uokit/post_snapback.gif) порт открыть он не может. Попробуй ручками дописать номер порта вместо tostring(export_array.com) либо вообще задать порт строкой, можно попробовать задать его аналогично io.open открыть он не может порт этот. так же было бы совсем не лишним посмотреть правильно ли он находит номер порта и вывести в лог export_array.com https://learn.microsoft.com/en-us/windows/w...api-createfileaтут можно почитать про параметры с которыми можно поиграть. Ком порт он определяет правильно. В общем проблема была в пути к ком порту, не нужны там \\.\\ Строка должна выглядеть так для windows 11 COMport = ffi.cast('int', ffi.C.CreateFileA('COM' .. tostring(export_array.com), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nil)) Спасибо, что напомнил про dbg и ткнул куда копать)
|
|
|
|
Kangoshi |
23.7.2023, 0:23
|
![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif)
Neophyte
Сообщений: 36
Регистрация: 9.8.2011 Группа: Пользователи Наличность: 0
Пользователь №: 13.878
![](style_images/uokit/spacer.gif)
|
Цитата(DarkMaster @ 10.7.2023, 18:41) ![*](style_images/uokit/post_snapback.gif) Это была ошибка изначально. Там должно быть вообще: \\.\COM* но все \ нужно удваивать для экранирования. Соответственно в одном месте был экран, во втором нет.
А что насчёт звёздочки после COM? (IMG: style_emoticons/default/huh.gif) '\\\\.\\COM*' должно быть или '\\\\.\\COM' ? И раз уж привлёк внимание, как нажимать end? Строка в arduino.lua: export_array["end"] = 0xD5. Могу, конечно, переименовать во что-то отличное от end, но просто интересно как это сделать с таким "синтаксисом". А так же клавиши / и * с нумпада, точнее не могу найти их кодов для этого драйвера.
|
|
|
|
DarkMaster |
23.7.2023, 22:49
|
![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif)
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27738
Пользователь №: 11.279
![](style_images/uokit/spacer.gif)
|
извездочка подразумевалась под замену номером порта. Код --lua local key = { mouse_1 = 0x01, -- VK_LBUTTON Left mouse button mouse_2 = 0x02, -- VK_RBUTTON Right mouse button --0x03 -- VK_CANCEL Control-break processing mouse_middle = 0x04, -- VK_MBUTTON Middle mouse button (three-button mouse) mouse_4 = 0x05, -- VK_XBUTTON1 X1 mouse button mouse_5 = 0x06, -- VK_XBUTTON2 X2 mouse button --0x07 -- Undefined backspace = 0x08, -- VK_BACK BACKSPACE key tab = 0x09, -- VK_TAB TAB key --0x0A-0B -- Reserved --0x0C -- VK_CLEAR CLEAR key enter = 0x0D, -- VK_RETURN ENTER key --0x0E-0F -- Undefined shift = 0x10, -- VK_SHIFT SHIFT key ctrl = 0x11, -- VK_CONTROL CTRL key alt = 0x12, -- VK_MENU ALT key pause = 0x13, -- VK_PAUSE PAUSE key caps_lock = 0x14, -- VK_CAPITAL CAPS LOCK key --0x15 -- VK_KANA IME Kana mode --0x15 -- VK_HANGUEL IME Hanguel mode (maintained for compatibility; use VK_HANGUL) --0x15 -- VK_HANGUL IME Hangul mode --0x16 -- Undefined --0x17 -- VK_JUNJA IME Junja mode --0x18 -- VK_FINAL IME final mode --0x19 -- VK_HANJA IME Hanja mode --0x19 -- VK_KANJI IME Kanji mode --0x1A -- Undefined esc = 0x1B, -- VK_ESCAPE ESC key escape = 0x1B, -- VK_ESCAPE ESC key --0x1C -- VK_CONVERT IME convert --0x1D -- VK_NONCONVERT IME nonconvert --0x1E -- VK_ACCEPT IME accept --0x1F -- VK_MODECHANGE IME mode change request spacebar = 0x20, -- VK_SPACE SPACEBAR page_up = 0x21, -- VK_PRIOR PAGE UP key page_down = 0x22, -- VK_NEXT PAGE DOWN key ["end"] = 0x23, -- VK_END END key _end = 0x23, -- VK_END END key home = 0x24, -- VK_HOME HOME key left = 0x25, -- VK_LEFT LEFT ARROW key up = 0x26, -- VK_UP UP ARROW key right = 0x27, -- VK_RIGHT RIGHT ARROW key down = 0x28, -- VK_DOWN DOWN ARROW key --0x29 -- VK_SELECT SELECT key --0x2A -- VK_PRINT PRINT key --0x2B -- VK_EXECUTE EXECUTE key print_screen = 0x2C, -- VK_SNAPSHOT PRINT SCREEN key insert = 0x2D, -- VK_INSERT INS key delete = 0x2E, -- VK_DELETE DEL key --0x2F -- VK_HELP HELP key ["0"] = 0x30, -- 0 key ["1"] = 0x31, -- 1 key ["2"] = 0x32, -- 2 key ["3"] = 0x33, -- 3 key ["4"] = 0x34, -- 4 key ["5"] = 0x35, -- 5 key ["6"] = 0x36, -- 6 key ["7"] = 0x37, -- 7 key ["8"] = 0x38, -- 8 key ["9"] = 0x39, -- 9 key --0x3A-40 -- Undefined a = 0x41, -- A key b = 0x42, -- B key c = 0x43, -- C key d = 0x44, -- D key e = 0x45, -- E key f = 0x46, -- F key g = 0x47, -- G key h = 0x48, -- H key i = 0x49, -- I key j = 0x4A, -- J key k = 0x4B, -- K key l = 0x4C, -- L key m = 0x4D, -- M key n = 0x4E, -- N key o = 0x4F, -- O key p = 0x50, -- P key q = 0x51, -- Q key r = 0x52, -- R key s = 0x53, -- S key t = 0x54, -- T key u = 0x55, -- U key v = 0x56, -- V key w = 0x57, -- W key x = 0x58, -- X key y = 0x59, -- Y key z = 0x5A, -- Z key A = 0x41, -- A key B = 0x42, -- B key C = 0x43, -- C key D = 0x44, -- D key E = 0x45, -- E key F = 0x46, -- F key G = 0x47, -- G key H = 0x48, -- H key I = 0x49, -- I key J = 0x4A, -- J key K = 0x4B, -- K key L = 0x4C, -- L key M = 0x4D, -- M key N = 0x4E, -- N key O = 0x4F, -- O key P = 0x50, -- P key Q = 0x51, -- Q key R = 0x52, -- R key S = 0x53, -- S key T = 0x54, -- T key U = 0x55, -- U key V = 0x56, -- V key W = 0x57, -- W key X = 0x58, -- X key Y = 0x59, -- Y key Z = 0x5A, -- Z key win = 0x5B, -- VK_LWIN Left Windows key (Natural keyboard) --0x5C -- VK_RWIN Right Windows key (Natural keyboard) --0x5D -- VK_APPS Applications key (Natural keyboard) --0x5E -- Reserved sleep = 0x5F, -- VK_SLEEP Computer Sleep key num_0 = 0x60, -- VK_NUMPAD0 Numeric keypad 0 key num_1 = 0x61, -- VK_NUMPAD1 Numeric keypad 1 key num_2 = 0x62, -- VK_NUMPAD2 Numeric keypad 2 key num_3 = 0x63, -- VK_NUMPAD3 Numeric keypad 3 key num_4 = 0x64, -- VK_NUMPAD4 Numeric keypad 4 key num_5 = 0x65, -- VK_NUMPAD5 Numeric keypad 5 key num_6 = 0x66, -- VK_NUMPAD6 Numeric keypad 6 key num_7 = 0x67, -- VK_NUMPAD7 Numeric keypad 7 key num_8 = 0x68, -- VK_NUMPAD8 Numeric keypad 8 key num_9 = 0x69, -- VK_NUMPAD9 Numeric keypad 9 key ["num_*"] = 0x6A, num_multiply = 0x6A, -- VK_MULTIPLY Multiply key ["num_+"] = 0x6B, num_plus = 0x6B, -- VK_ADD Add key --0x6C -- VK_SEPARATOR Separator key ["num_-"] = 0x6D, num_minus = 0x6D, -- VK_SUBTRACT Subtract key ["num_."] = 0x6E, num_del = 0x6E, -- VK_DECIMAL Decimal key ["num_/"] = 0x6F, num_devide = 0x6F, num_slash = 0x6F, -- VK_DIVIDE Divide key F1 = 0x70, -- VK_F1 F1 key F2 = 0x71, -- VK_F2 F2 key F3 = 0x72, -- VK_F3 F3 key F4 = 0x73, -- VK_F4 F4 key F5 = 0x74, -- VK_F5 F5 key F6 = 0x75, -- VK_F6 F6 key F7 = 0x76, -- VK_F7 F7 key F8 = 0x77, -- VK_F8 F8 key F9 = 0x78, -- VK_F9 F9 key F10 = 0x79, -- VK_F10 F10 key F11 = 0x7A, -- VK_F11 F11 key F12 = 0x7B, -- VK_F12 F12 key F13 = 0x7C, -- VK_F13 F13 key F14 = 0x7D, -- VK_F14 F14 key F15 = 0x7E, -- VK_F15 F15 key F16 = 0x7F, -- VK_F16 F16 key F17 = 0x80, -- VK_F17 F17 key F18 = 0x81, -- VK_F18 F18 key F19 = 0x82, -- VK_F19 F19 key F20 = 0x83, -- VK_F20 F20 key F21 = 0x84, -- VK_F21 F21 key F22 = 0x85, -- VK_F22 F22 key F23 = 0x86, -- VK_F23 F23 key F24 = 0x87, -- VK_F24 F24 key f1 = 0x70, -- VK_F1 F1 key f2 = 0x71, -- VK_F2 F2 key f3 = 0x72, -- VK_F3 F3 key f4 = 0x73, -- VK_F4 F4 key f5 = 0x74, -- VK_F5 F5 key f6 = 0x75, -- VK_F6 F6 key f7 = 0x76, -- VK_F7 F7 key f8 = 0x77, -- VK_F8 F8 key f9 = 0x78, -- VK_F9 F9 key f10 = 0x79, -- VK_F10 F10 key f11 = 0x7A, -- VK_F11 F11 key f12 = 0x7B, -- VK_F12 F12 key f13 = 0x7C, -- VK_F13 F13 key f14 = 0x7D, -- VK_F14 F14 key f15 = 0x7E, -- VK_F15 F15 key f16 = 0x7F, -- VK_F16 F16 key f17 = 0x80, -- VK_F17 F17 key f18 = 0x81, -- VK_F18 F18 key f19 = 0x82, -- VK_F19 F19 key f20 = 0x83, -- VK_F20 F20 key f21 = 0x84, -- VK_F21 F21 key f22 = 0x85, -- VK_F22 F22 key f23 = 0x86, -- VK_F23 F23 key f24 = 0x87, -- VK_F24 F24 key --0x88-8F -- Unassigned num_lock = 0x90, -- VK_NUMLOCK NUM LOCK key scroll_lock = 0x91, -- VK_SCROLL SCROLL LOCK key --0x92-96 -- OEM specific --0x97-9F -- Unassigned shift_left = 0xA0, -- VK_LSHIFT Left SHIFT key shift_right = 0xA1, -- VK_RSHIFT Right SHIFT key ctrl_left = 0xA2, -- VK_LCONTROL Left CONTROL key ctrl_right = 0xA3, -- VK_RCONTROL Right CONTROL key menu_left = 0xA4, -- VK_LMENU Left MENU key menu_right = 0xA5, -- VK_RMENU Right MENU key browser_back = 0xA6, -- VK_BROWSER_BACK Browser Back key browser_forward = 0xA7, -- VK_BROWSER_FORWARD Browser Forward key browser_refresh = 0xA8, -- VK_BROWSER_REFRESH Browser Refresh key browser_stop = 0xA9, -- VK_BROWSER_STOP Browser Stop key browser_search = 0xAA, -- VK_BROWSER_SEARCH Browser Search key browser_favorites = 0xAB, -- VK_BROWSER_FAVORITES Browser Favorites key browser_home = 0xAC, -- VK_BROWSER_HOME Browser Start and Home key mute = 0xAD, -- VK_VOLUME_MUTE Volume Mute key volume_down = 0xAE, -- VK_VOLUME_DOWN Volume Down key volume_up = 0xAF, -- VK_VOLUME_UP Volume Up key media_next = 0xB0, -- VK_MEDIA_NEXT_TRACK Next Track key media_prev = 0xB1, -- VK_MEDIA_PREV_TRACK Previous Track key media_stop = 0xB2, -- VK_MEDIA_STOP Stop Media key media_play = 0xB3, -- VK_MEDIA_PLAY_PAUSE Play/Pause Media key media_pasue = 0xB3, -- VK_MEDIA_PLAY_PAUSE Play/Pause Media key launch_mail = 0xB4, -- VK_LAUNCH_MAIL Start Mail key launch_media = 0xB5, -- VK_LAUNCH_MEDIA_SELECT Select Media key launch_app_1 = 0xB6, -- VK_LAUNCH_APP1 Start Application 1 key launch_app_2 = 0xB6, -- VK_LAUNCH_APP1 Start Application 2 key --0xB8-B9 -- Reserved [";"] = 0xBA, -- VK_OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key [":"] = 0xBA, -- VK_OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key ["+"] = 0xBB, -- VK_OEM_PLUS For any country/region, the '+' key [","] = 0xBC, -- VK_OEM_COMMA For any country/region, the ',' key ["-"] = 0xBD, -- VK_OEM_MINUS For any country/region, the '-' key ["."] = 0xBE, -- VK_OEM_PERIOD For any country/region, the '.' key ["/"] = 0xBF, -- VK_OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key ["?"] = 0xBF, -- VK_OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key ["`"] = 0xC0, -- VK_OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key ["~"] = 0xC0, -- VK_OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key --0xC1-D7 -- Reserved --0xD8-DA -- Unassigned ["["] = 0xDB, -- VK_OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key ["{"] = 0xDB, -- VK_OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key ["\\"] = 0xDC, -- VK_OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key ["|"] = 0xDC, -- VK_OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key ["]"] = 0xDD, -- VK_OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key ["}"] = 0xDD, -- VK_OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key ["'"] = 0xDE, -- VK_OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key ['"'] = 0xDE, -- VK_OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key --0xDF -- VK_OEM_8 Used for miscellaneous characters; it can vary by keyboard. --0xDF -- VK_OEM_8 Used for miscellaneous characters; it can vary by keyboard. --0xE0 -- Reserved --0xE1 -- OEM specific --0xE2 -- VK_OEM_102 Either the angle bracket key or the backslash key on the RT 102-key keyboard --0xE3-E4 -- OEM specific --0xE5 -- VK_PROCESSKEY IME PROCESS key --0xE6 -- OEM specific --0xE7 -- VK_PACKET Used to pass Unicode characters as if they were keystrokes. -- The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. -- For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP --0xE8 -- Unassigned --0xE9-F5 -- OEM specific --0xF6 -- VK_ATTN Attn key --0xF7 -- VK_CRSEL CrSel key --0xF8 -- VK_EXSEL ExSel key --0xF9 -- VK_EREOF Erase EOF key play = 0xFA, -- VK_PLAY Play key zoom = 0xFB, -- VK_ZOOM Zoom key --0xFC -- VK_NONAME Reserved --0xFD -- VK_PA1 PA1 key --0xFE -- VK_OEM_CLEAR Clear key }
return key
когда-то писал себе хоткеи. для тяжелых случаев можете детектор использовать: Код
--lua local dbg = require[[lua_plugins\mydbg]] local ffi = require[[ffi]] local rmem = ffi.cast print = log print "clear" print "mode compact" local cfg, fi, open, click = {},{},{},{}
local winapi do -- У меня пути не стандартные, чтобы избежать свинарника. -- Поэтому тут есть пара "лишних" строк. -- Сохраняем _текущие_ пути по которым ищутся модули. local back = package.path -- Дописываю путь по которому у меня лежат модули. package.path = "lua_plugins\\winapi\\?.lua;"..package.path -- Подгружаем собственно модуль. -- Хз почему, но грузить нужно именно так. -- Просто require 'winapi' не пашет. winapi = require 'winapi' --ext.lg(winapi) -- Подгружаем кусок отвечающий за клавиатуру require[[winapi.keyboard]] -- Возвращаем пути поиска модулей на исходные. package.path = back
end
-- Поолучаем состояние клавиши: -- state - нажата/отжата -- toggle - для лампочек горит/не горит. --local state, toggle = GetKeyState(0x14) --log(tostring(state),tostring(toggle))
local state_arr = {}
while 1 do for i = 0, 255 do local state, toggle = winapi.GetKeyState(i) if state and not state_arr[i] then state_arr[i] = true log(string.format("%.3f", os.clock())..": "..i.." down") elseif not state and state_arr[i] then state_arr[i] = false log(string.format("%.3f", os.clock())..": "..i.." up") end end wait(1) end
Сообщение отредактировал DarkMaster - 20.11.2023, 6:53
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Kangoshi |
24.7.2023, 19:34
|
![*](style_images/uokit/pip.gif) ![*](style_images/uokit/pip.gif)
Neophyte
Сообщений: 36
Регистрация: 9.8.2011 Группа: Пользователи Наличность: 0
Пользователь №: 13.878
![](style_images/uokit/spacer.gif)
|
Коды не те, но я нашёл вот тут.Для / и * с нумпада это 0xDC и 0xDD. Но я так и не понял зачем это в файле arduino.lua: export_array["end"] = 0xD5 и как это написать в скрипте. hw.key (hw. а дальше что? Я просто не в курсе синтаксиса, но пробовал разные варианты - ничего не работает.
|
|
|
|
|
![Ответить в эту тему](style_images/uokit/t_reply.gif) ![Открыть новую тему](style_images/uokit/t_new.gif) |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|