Pull to refresh

Comments 35

UFO just landed and posted this here
Исходники никто не обещал. Не все проекты OpenSource.
Есть демо версия. emulator.ucoz.org/Emulator/1_0/KM_Emulator_Demo_v1.0.zip
Она также в архиве с примерами. emulator.ucoz.org/Emulator/1_0/Emulator_Example_v1.0.zip
Это законченное ПО и работа с ним осуществляется через компонент приложения Emulator.dll На сайте есть список функций с их описанием.
А где ну… хоть что-нибудь? Какую пользу несет эта статья? Здесь не рассказано о сложностях и тонких моментах, здесь нет оригинальной идеи, здесь даже нет красивой реализации.
Может быть, вы предлагаете готовое решение для какой-то задачи? Наверное, я плохо искал, но ссылок систему контроля версий для доработки кода, ни хотя бы бинарника не нашел.
При том, что эмуляция клавомыши уже реализована не то что на stm, но даже на программном usb на всяких atmega8 — с исходниками и всем остальным.
Я не зря дал ссылку на сайт. Предполагается дальнейшее развитие проекта и со временем будут новые версии. Поэтому я не стал давать прямую ссылку на загрузку. На сайте можно найти актуальную версию.
Но раз просите вот ссылка на архив с примерами которая есть на сайте emulator.ucoz.org/Emulator/1_0/Emulator_Example_v1.0.zip
В ней найдете dll и прошивку в hex формате. В bin не компилировал, но если нужно соберу.
Я думаю вы знаете какова скорость обмена у HID у низкоскоростных девайсов которые возможно собрать на atmega8. Надеюсь понимаете что достичь 2 мс на эмуляцию принципиально невозможно, поскольку минимальное время опроса конечных точек 10 мс.
Это законченное устройство которое было отлажено и протестировано. Оно для тех кто не имеет опыта работы с микроконтроллерами но немного разбирается в программировании под windows. Таких людей немало.
Да уж куда нам, убогим.
Для справки, некоторые хосты игнорируют ограничение на частоту опроса и вполне допускают опрос раз в миллисекунду даже для низкоскоростных устройств.
Но смысл гоняться за скоростью клавиатуры для меня непонятен.
ссылка на архив с примерами которая есть на сайте
Вы бы лучше описали алгоритм поиска этой ссылки. Все равно повторять ваше устройство вряд ли кто-то будет.
Да уж куда нам, убогим.
Вы проделали большую работу. Но с практической точки зрения программный USB во всем уступает аппаратному (МК с модулем USB). Если бы обсуждаемый эмулятор был собран на ATmega8 и вашей библиотеке, его характеристики были значительно скромнее, т. к. опрос каждые 10 мс и максимум 8 байт в пакете. И если не ошибаюсь есть ограничения на количество конечных точек.

некоторые хосты игнорируют ограничение на частоту опроса
Нужна стабильная работа на всех компах и системах, иначе я не смогу гарантировать заявленные характеристики и вообще работоспособность устройства.

Вы бы лучше описали алгоритм поиска этой ссылки.
На сайте не много страниц. Ссылка на архив на странице emulator.ucoz.org/load/apparatnyj_ehmuljator_klaviatury_i_myshi_versii_1_0/1-1-0-1
Я что-то в статье не увидел, чем програмный продукт уступает аппаратному???
Я же написал что программная эмуляция не работает во многих играх и в защищенных приложениях.
Эмулировать программно нажатия можно разными способами. Вам ничего не мешает написать свой драйвер клавиатуры, который бы эмулировал нажатия на уровне ядра. То что у вас там не работает, я не знаю. Видимо програмы написанные кем-то и все… Я понимаю например, когда вам надо эмулировать нажатия на какой-нибудь платвоме, куда можно подключить клавиатуру, но ОС не windows/linux… Больше вариантов нет…
Вам ничего не мешает написать свой драйвер клавиатуры, который бы эмулировал нажатия на уровне ядра.
1. Сложнее обеспечить совместимость между различными ОС.
2. Нужна цифровая подпись для драйвера. Ее стоимость гораздо выше чем у микроконтроллера.
3. Мне намного проще сделать на МК чем писать драйвер под винду.
1. Сложнее обеспечить совместимость между различными ОС.

А непонятная dll'ка это, конечно, верх совместимости. Она там хоть крипту не майнит, пока никто не видит?
Что не так с dll? В импорте только стандартные библиотеки и должно работать начиная с Windows 2000 и выше включая текущую Windows 10.

Полагаете реально в 18 КБ (это размер dll) поместить крипто-майнер и функционал эмулятора? Будь там майнер, было бы логичнее распространять dll и прошивку абсолютно бесплатно.
Монетизация проекта за счет продажи прошивок и никаких майнеров или других вредоносных действий не осуществляется.
Откуда мне знать что не так с dll? Я ее кода не видел. Причин доверять рандомному рекламщику в интернете у меня тоже нет.
Ну и суть моего коммента вы успешно упустили: как ваша dll'ка будет работать под Linux или Mac?
Если бы я хотел сделать подобное устройство, то сделал бы более стандартный алгоритм обмена — виртуальный COM-порт или custom-HID. Ни то ни другое специальных драйверов не требует.
vusb это не моя библиотека, я только расписал как она работает.
опрос каждые 10 мс и максимум 8 байт в пакете. И если не ошибаюсь есть ограничения на количество конечных точек.
Опрос скорее всего будет с периодом 1 мс, причем это никак не скажется на стабильности.
8 байт на пакет и 3 конечные точки? А вам сколько нужно? Размер пакета для HID фиксирован, все общение так и так идет через endpoint0.
Что-то я сильно сомневаюсь, что вы заморачивались с составным устройством из 6 клавиатур, одной мышки и одной проприетарщины (с которой работает ваша библиотека).
Опрос скорее всего будет с периодом 1 мс, причем это никак не скажется на стабильности.
Если нет 100% гарантии то не вариант. Объясните зачем пользоваться программной эмуляцией когда большой выбор МК с USB?

8 байт на пакет и 3 конечные точки? А вам сколько нужно?
Посмотрите в заявленных характеристиках указано одновременное нажатие 14 кнопок клавиатуры. Для этого размер пакета должен быть не меньше 16 байт. Размер других пакетов еще больше. Думаю понимаете что 8 байт не вариант.
3 точки мало. В эмуляторе задействованы 4 (2 двунаправленные) не считая нулевой.

все общение так и так идет через endpoint0
В этом эмуляторе общение через точки больше нулевой. Для нулевой нельзя задать период опроса и он будет больше чем 1 мс. В добавок много потоков на одну точку дополнительно снизит скорость эмуляции.
Если нет 100% гарантии то не вариант. Объясните зачем пользоваться программной эмуляцией когда большой выбор МК с USB?
Например, если они есть под рукой. Да и жалко тратить целую stm'ку для задачи, с которой AVR справится ничуть не хуже. Впрочем, сама задача все еще непонятна.
Посмотрите в заявленных характеристиках
Вот если бы привели код, можно было бы смотреть внимательнее. А так проглядел по диагонали — зачем уделять лишнее время настолько бесполезной рекламе?
В добавок много потоков на одну точку дополнительно снизит скорость эмуляции.
Не-а. Определение номера точки это чтение пары битов, оно почти ничего не стоит.
Да и жалко тратить целую stm'ку для задачи, с которой AVR справится ничуть не хуже.
Стоимость AVR с модулем USB выше чем у STM32 (сравните цену STM32F103C8T6 и ATmega32U4, и цену Blue Pill в сравнении с Arduino Pro Micro).
Программный USB даже не рассматриваю потому что он уступает аппаратному по всем параметрам. Надежность работы гораздо важнее экономии нескольких рублей.

Вот если бы привели код, можно было бы смотреть внимательнее.
Для того чтобы понять в чем преимущество аппаратного USB в сравнении с программным, код не нужен.

Определение номера точки это чтение пары битов, оно почти ничего не стоит.
Я пишу про период опроса точек. Если они на разных интерфейсах, то опрашиваются независимо друг от друга и по факту скорость опроса выше чем на одном интерфейсе.
Стоимость AVR с модулем USB выше чем у STM32
Уже не так однозначно, не правда ли?
Для того чтобы понять в чем преимущество аппаратного USB в сравнении с программным, код не нужен.
Код нужен чтобы улучшать устройство и допиливать его под свои нужды. Ну или хотя бы посмотреть реализацию и применить в другом месте.
Впрочем, вы правы: вряд ли от вашего кода будет какая-то польза.
Уже не так однозначно, не правда ли?
Действительно неоднозначно зачем выдирать фразу из контекста полностью меняя ее смысл?
То есть сами понимаете слабость своих аргументов. Если не выдирать из контекста (ведь для HID совсем не обязателен аппаратный модуль), доказать нужность своего «изобретения» становится сложнее.
Это галимая реклама.

Интересно, администрация Хабра получила от «автора» деньги, положенные за размещение материалов рекламного характера?

Мне давеча при помощи ардуино пришлось ввод пароля эмулировать, чтобы в свой компьютер попасть, поскольку клавиатура беспроводная не захотела коннектиться. Та же плата сейчас 16-канальный джойстик эмулирует для р/у модели. Вопрос дилетанта, чем оно хуже описанного в статье?

Предлагаемый эмулятор получает команды от приложения. Он предназначен для автоматизации действий в других приложениях и играх, например в ботах для игр защищенных от программной эмуляции ввода античитом или другим методом. То есть, это законченный аппаратно-программный комплекс предназначенный для автоматизации.
У вас устройства немного другой направленности.

Спасибо. Уточню вопрос, технически с Вашей точки зрения, STM в задачах аппаратной эмуляции HID устройств в перечисленных примерах, имеет значимые преимущества перед атмегой, или эффективность будет сравнима? То, что Вы описали, вполне воспроизводимо, на первый взгляд.

Если ATmega со встроенным модулем USB разницы почти нет. Но если он отсутствует (ATmega8, ATmega328 или подобный), и работа с USB программная, это существенно ухудшит характеристики устройства что скажется на его возможностях.
Это приложение для «накрутки деревьев/руды» в онлайн игрухах, и сделано чтобы прятаться от программ обнаруживающих эмуляторы, одним словом чисто коммерческий проджект. При этом толку сделать сайт не на убогом уКозе нехватило, реклама и рекламой погоняет, как настучать админу — хочу стать юным барабанЩегом )))?
Это не эмулятор управляемый приложением. То есть к рассматриваемому в статье отношения не имеет.
Более того, это целый класс устройств — Bad USB. ИМХО автору стоило бы расписать, чем его реализация лучше каноничнойЪ Rubber Ducky или Wi-Fi Ducky, которая тоже «получает команды от приложения».
Эмулятор в статье для автоматизации действий, не для вредоносных целей.
Инструмент не может быть «для вредоносных целей». Это всего лишь инструмент. Вредоносным или нет его делает пользователь. Никто не мешает закинуть в Rubber payload, который будет просто вводить 32-символьный пароль от криптокошелька. Точно так-же как и ваша bluepill может творить дичь.
Так и через bad usb это можно делать. Там же любые нажатия на кнопки эмулируются. Можно хоть стартовый набор программ ставить или винду через PS настраивать.
У Wi-Fi ducky есть вебинтерфейс (насколько я понимаю, интерфейс довольно мощный), через который она управляется.
UFO just landed and posted this here
Sign up to leave a comment.

Articles