Ducky script / Rubber ducky
Ducky Script — это скриптовый язык программирования, предназначенный для преобразования последовательности команд в действия, имитирующие нажатия клавиш на клавиатуре.
Этот язык похож на AutoHotKey для Windows, но при этом Ducky Script гораздо более узкоспециализирован и предназначен исключительно для работы с клавишными вводами, а не для создания полноценных скриптов с более сложной логикой.
Главная особенность Ducky Script заключается в том, что его можно загрузить на устройства типа Rubber Ducky, которые представляют собой USB-устройства, способные воспроизводить команды, как если бы это были физические нажатия клавиш.
Также с помощью Ducky Script реализуется функционал BadUSB на устройствах типа M5Stick, T-Embed и Flipper Zero.
Где купить?
Самый популярный и доступный вариант — это флешка Rubber Ducky, которая, несмотря на внешний вид флеш-накопителя, не является таковой.
Это перепрограммируемое USB-устройство, которое используется для выполнения скриптов, написанных на языке Ducky Script. Модели Rubber Ducky можно найти на различных торговых платформах.
Синтаксис
Язык Ducky Script достаточно прост и его можно выучить за короткое время, например, за 30 минут, если есть желание разобраться. Ниже приведён пример скриптов для двух операционных систем:
REM A slightly more advanced «Hello, World!» for Windows
DELAY 3000
REM Open the Run dialog
WINDOWS r
DELAY 1000
REM Open PowerShell with our message
STRING powershell «echo 'Hello, World! '; pause»
ENTER
REM A slightly more advanced "Hello, World!" for macOS
DELAY 3000
REM Open Spotlight Search
COMMAND SPACE
REM Open the text editor
STRING TextEdit
ENTER
DELAY 2000
COMMAND n
DELAY 2000
STRING echo Hello, World!
В этих примерах показано, как вывести текст “Hello, World!” на экране в PowerShell (для Windows) и в текстовом редакторе TextEdit (для macOS).
Команды и их описание
Ducky Script использует несколько базовых команд для взаимодействия с операционной системой:
1. DELAY [миллисекунды]
• Задержка перед выполнением следующей команды. Например, DELAY 1000 — задержка на 1 секунду.
2. GUI [клавиша]
• Нажатие клавиши Windows (GUI). Например, GUI r откроет меню “Выполнить” через комбинацию Win+R.
3. STRING [текст]
• Ввод строки текста. Например, STRING Hello World напишет “Hello World”.
4. ENTER
5. CONTROL [клавиша]
• Нажатие клавиши с модификатором Control. Например, CONTROL a выделит весь текст (Ctrl+A).
6. ALT [клавиша]
• Нажатие клавиши с модификатором Alt. Например, ALT F4 закроет активное окно (Alt+F4).
7. SHIFT [клавиша]
• Нажатие клавиши с модификатором Shift. Например, SHIFT 2 напечатает знак @ (Shift+2).
8. REPEAT [кол-во повторений]
• Повторение предыдущей команды заданное количество раз. Например, REPEAT 5 повторит последнюю команду 5 раз.
9. WAIT [секунды]
• Задержка в секундах. Например, WAIT 2 подождёт 2 секунды.
10. REM [комментарий]
• Комментарий в коде, который игнорируется во время выполнения. Например, REM This is a comment.
11. LED [1/0]
• Управление светодиодом на устройстве. LED 1 — включить, LED 0 — выключить.
12. WINDOWS [клавиша]
• Альтернатива команде GUI для выполнения действий с клавишей Windows. Например, WINDOWS d покажет рабочий стол (Win+D).
13. MENU или APP (Клавиша приложения):
Эмулирует клавишу приложения, которую иногда называют клавишей меню или клавишей контекстного меню. В системах Windows это похоже на комбинацию клавиш SHIFT F10, подобное щелчку правой кнопкой мыши.
Пример:
GUI d
MENU
STRING v
STRING d
14. Клавиши стрелок:
DOWNARROW или DOWN - вниз
LEFTARROW или LEFT - влево
RIGHTARROW или RIGHT - вправо
UPARROW или UP - вверх
15. Кнопки мыши:
• LMOUSE: Нажатие ЛЕВОЙ кнопки мыши
• RMOUSE: Нажатие ПРАВОЙ кнопки мыши
• MMOUSE: Нажатие СРЕДНЕЙ кнопки мыши.
Вы также можете перемещать курсор мыши по пикселям, ориентируясь на X и Y (горизонтать и вертикаль):
Честно говоря, намного проще, надёжнее и быстрее управлять клавишами.
Более того, неизвестно, в каком положении будет находиться курсор изначально.
16. SWCOLOR (Изменения цвета клавиш):
Вы можете изменить цвет клавиши на лету с помощью SWCOLOR —>
Чтобы изменить цвет текущей клавиши , используйте синтаксис SWCOLOR R G B:
Чтобы изменить цвет определенной клавиши , используйте SWCOLOR_n R G B:
Значение R G B должно быть между 0 и 255.
0 выключено, 255 максимальное.
17. DP_SLEEP (Сон):
Вы можете использовать команду DP_SLEEP, чтобы заставить duckyPad заснуть.
В таком случае подсветка и экран будут выключены.
18. LOOP (Создание циклов):
Эта команда позволяет назначить разные действия одной и той же клавише.
Вы можете использовать его для переключения / циклического выполнения нескольких действий, например:
LOOP0:
STRING first action
ENTER
LOOP1:
STRING second action
ENTER
LOOP2:
STRING third action
ENTER
• Поддерживается до 10 действий (LOOP0 - LOOP9).
• Когда вы нажимаете клавишу, счетчик увеличивается, и скрипт в соответствующем цикле выполняется.
• Эта команда еще не поддерживается приложением test-run для ПК.
• Эта команда является экспериментальной, если вы столкнетесь с какими-либо ошибками, дайте разработчику знать!
Конвертация скриптов:
Учитывая, что такие устройства как LilyGo разработаны на базе Arduino - скрипты придётся компилировать в полноценный язык программирования. Использовать его достаточно просто, открываем файл HTML:
В верхнюю строку вводим скрипт в виде DuckyScript, а в нижней получаем результат:
(Ниже, под статьёй, оставлю файл)
Примечания по синтаксису
• Клавиши в командах обозначаются маленькими латинскими буквами.
• Аргументы (например, текст или числа) пишутся через пробел без дополнительных символов.