The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Использование BPF-программ для решения проблем в устройствах ввода

22.04.2024 21:31

Питер Хаттерер (Peter Hutterer), мэйнтейнер подсистемы ввода X.Org, работающий в Red Hat, представил новую утилиту udev-hid-bpf, предназначенную для автоматической загрузки BPF-программ, исправляющих проблемы в устройствах ввода с интерфейсом HID (Human Interface Device) или меняющих их поведение в зависимости от предпочтений пользователя. Для создания обработчиков к HID-устройствами, таким как клавиатуры и мыши, применяется подсистема HID-BPF, появившаяся в ядре Linux 6.3 и позволяющая создавать драйверы устройств ввода в форме BPF-программ или обрабатывать различные события в подсистеме HID.

Утилита udev-hid-bpf может использоваться вместе с механизмом udev для автоматической активации BPF-программ при подключении новых устройств ввода или для загрузки BPF-программ в ручном режиме. Выделяются две основные категории BPF-программ для использование вместе с udev-hid-bpf: программы для устранения проблем в аппаратном обеспечении или прошивках, и программы для изменения поведения устройств по желанию пользователя.

В первом случае решаются задачи устранения недоработок и ошибок в устройствах, таких как инвертированные оси координат, некорректные диапазоны значений (например, заявление о наличии 8 кнопок вместо 5) и нелогичные последовательности событий. Во втором случае речь об изменении настроек устройств, например, при помощи BPF-программ можно поменять местами кнопки. Предполагается, что BPF-программы с исправлениями со временем будут включены в основной состав ядра и позволят обойтись без добавления в ядро патчей или отдельных драйверов.

  1. Главная ссылка к новости (https://lwn.net/Articles/97070...)
  2. OpenNews: Релиз ядра Linux 6.3
  3. OpenNews: Релиз Libinput 1.0, унифицированного стека для работы с устройствами ввода
  4. OpenNews: Разработчики Gentoo официально анонсировали проект eudev, не зависящий от systemd
  5. OpenNews: В рамках проекта vdev развивается новая альтернатива devfs и udev
  6. OpenNews: Исправление в ядре Linux привело к проблемам с некоторыми графическими планшетами
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61046-hid
Ключевые слова: hid, input, driver
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (60) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 21:45, 22/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Почему бы открыто не написать что это сделано чтобы писать надёжные кейлогеры, которые работают даже в вейленде?
     
     
  • 2.3, Аноним (3), 22:02, 22/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А давайте б..., задействуем еще DSP звуковой карты для потоковой обработки с устройства ввода, чтоб снять нагрузку с процессора и только потом передадим данные в БПФ а у ж оттуда в драйвер, чтоб точно никто не догадался где подглючивает и куда по дорогк сливает. А то добавлять параметр в драйвер - это же так скуууучно...
     
     
  • 3.20, Аноним (20), 23:16, 22/04/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Давайте!
    https://www.opennet.ru/man.shtml?topic=as10k1
    https://manpages.ubuntu.com/manpages/trusty/en/man8/ld10k1.8.html
    https://github.com/kxproject/
     
  • 3.21, Аноним (20), 23:20, 22/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    PS Основное применение EMU10K1 и 2 - это HRIR/HRTF, ибо миддлвари для EAX опенсорсной нет, да и поддержку в софте дропнули. Как и поддержку аппаратного миди, хотя у него поддержка на порядки лучше, прямо в пайпвайре есть, но ... вместо него хламософт использует fluidsynth, причём обязательно статически прилинкованный.
     
  • 3.54, Аноним (-), 11:32, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А давайте б..., задействуем еще DSP звуковой карты для потоковой обработки
    > с устройства ввода, чтоб снять нагрузку с процессора и только потом передадим данные в БПФ

    Так то если утрировать - можете выбросить GPU и считать все на CPU, а то что 5 FPS'ов получается - так может хрен с ней, с нагрузкой на проц то? :)

     
     
  • 4.59, Аноним (59), 14:13, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зато юниксвейно — в компьютере считать должна только одна микросхема!
     
  • 2.10, Аноним (59), 22:22, 22/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >  Почему бы открыто не написать что это сделано чтобы писать надёжные кейлогеры, которые работают даже в вейленде?

    Но ведь для этого уже давно и с успехом используется механизм LKM?

     
     
  • 3.27, Аноним (27), 01:10, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Модуль ещё собрать нужно под каждое уникальное ядро. А здесь гарантированная (обратная) совместимость.
     
     
  • 4.32, Аноним (32), 01:41, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Вот в этом и есть главная ОПАСНОСТЬ байткода для ядра. Начнут же вновь обращённые линуксоиды из подоконников тянуть ото всюду эти байткоды без регистрации и СМС. Так-то модули из исходников собирать это для них хоть было Racket Science.
     
     
  • 5.35, Аноним (59), 02:07, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, если человек пришел из подоконников не вчера, а хотя бы позавчера, то он знает про dkms.
     
     
  • 6.37, Аноним (27), 02:25, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, если человек знает, что такое dkms, а не просто где-то слышал красивый buzzword, то он понимает, что dkms, сам по себе, никак не решает проблему несовместимости API разных версий ядра, это просто инфраструктура.
     
     
  • 7.38, Аноним (59), 02:30, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зато прекрасно решает проблему несовместимости ABI, позволяя собирать модули одной командой, безо всяких "руцкет сцаенц".
     
     
  • 8.40, Аноним (27), 02:35, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если вы готовы сопровождать свой кейлоггер для каждой новой версии ядра, то пожа... текст свёрнут, показать
     
     
  • 9.58, Аноним (59), 14:11, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И не только злоумышленнику Но в данной ситуации выгоднее думать только о злоумы... текст свёрнут, показать
     
     
  • 10.70, Аноним (70), 08:15, 24/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что это не работа пользователя исправлять косяки в устройствах, продающих... текст свёрнут, показать
     
  • 7.39, Аноним (27), 02:32, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы не быть голословным: https://aur.archlinux.org/packages/nvidia-390xx-dkms
    Посмотрите, сколько kernel-$(uname -r).patch потребовалось написать, чтобы недавно брошенный зонд от невидии продолжал работать с разными версиями ядер.
     
     
  • 8.41, Аноним (59), 03:08, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Остаётся только надеяться, что им не удастся приспособить под свои цели BPF, ина... текст свёрнут, показать
     
     
  • 9.42, Аноним (27), 04:37, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А что изменится Пользователь сидит на всём готовом Сопроводителю поправить пер... текст свёрнут, показать
     
     
  • 10.57, Аноним (59), 14:09, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А если сопроводителю будет легче, то пользователю будет ещё больше готового, а э... текст свёрнут, показать
     
     
  • 11.69, Аноним (70), 08:10, 24/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если Невидия будет самостоятельно, в кодовой базе ядра, сопровождать свои модули... текст свёрнут, показать
     
  • 5.75, Аноним (75), 15:43, 29/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    рэкет ученых это пять
     
  • 4.36, Аноним (59), 02:09, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >  Модуль ещё собрать нужно под каждое уникальное ядро. А здесь гарантированная (обратная) совместимость.

    Похоже, Линусу с его stable ABI is nonsense придётся самому сесть на собственный палец.

     
  • 2.23, Аноним (23), 23:54, 22/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Почему бы открыто не написать что это сделано чтобы писать надёжные кейлогеры, которые работают даже в вейленде?

    Потому, что это сделано, чтобы исправлять последствия халтуры за зарплату бизнеса.

     
  • 2.71, glkoo (?), 08:39, 24/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так и сейчас вроде можно простым cat /dev/input/eventX логгировать нужные эвенты.
     

  • 1.2, crypt (ok), 21:59, 22/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    штатный интерфейс для малваре! как иновационно!
     
  • 1.6, Аноним (6), 22:16, 22/04/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     

     ....ответы скрыты (3)

  • 1.7, Аноним (6), 22:18, 22/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Опять бекдор под видом благих намерений пытались внедрить
     
     
  • 2.25, Аноним (25), 00:40, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Ничего, любителям иксов не привыкать. У них каждая программа может включить кейлоггер. Какой-нибудь дискорд может кейлоггерить, что ты там набираешь в VSCode, какой-нибудь VSCode может заскриншотить окно биткоин-кошелька и отправить в микрософт, а биткоин-кошелек может снять видео твоих действий в браузере. В вяленом ничего из этого невозможно, так как клиенты изолированы друг от друга.
     
     
  • 3.28, Аноним (27), 01:19, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > любителям иксов не привыкать

    Любители иксов и не привыкают. Привыкают любители вялого. К ограничениям и проблемам под сказки о безопафосности. А иксами люди просто пользуются, потому что на них всё работает.
    А для биткойна пускают отдельный икс-сервер на отдельном пользователе. Потому что зачем тебе кейлоггер, когда любой процесс, запущенный с правами того же пользователя, может запросто прочитать кэш пароля или даже весь кошелек из памяти процесса или файловой системы и отправить в /dev/thief?
    Запомните, дети, безопасность -- это модель угроз, а не волшебные программы из магазина, "безопасные, мамой клянусь".

     
     
  • 4.44, Аноним (44), 07:45, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Меня спасёт святой антивирус!
     
  • 3.45, Аноним (45), 08:51, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Какой-нибудь дискорд может кейлоггерить, что ты там набираешь в VSCode, какой-нибудь VSCode может заскриншотить окно биткоин-кошелька и отправить в микрософт, а биткоин-кошелек может снять видео твоих действий в браузере

    С такой логикой, любая программа и без вяленого может прочитать любой файл в твоем home. Что ж теперь делать-то?

    С чего вдруг VSCode скриншотить, а биткоин-кошельку записывать видео? Если же ты уже поставил и запустил левый скомпрометированный кошелек из Snap Store (ты же читал новости?) то теббе по-любому конец - он и без вяленого стырит твои деньги.

     
     
  • 4.48, Аноним (48), 09:24, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не знаю с чего вдруг, но скриншоты от тебя мне уже пришли.
     
  • 4.60, Аноним (59), 14:15, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > С такой логикой, любая программа и без вяленого может прочитать любой файл в твоем home. Что ж теперь делать-то?

    Защищать локально хранимые БД паролей мастер-паролем, использовать пароли для SSH и PGP ключей?
    Да не, бред какой-то.

     

  • 1.22, Аноним (20), 23:22, 22/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В ссылки на релевантные новости добавьте новость про Ревуа, у него  в блоге как раз упоминалось, что его проблему можно было бы "пофиксить" этим способом.
     
  • 1.26, Chatul Taalul (ok), 00:48, 23/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    напоминает технологию драйверов фильтров для ядра NT
     
     
  • 2.29, Аноним (32), 01:22, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Фильтров чего?
     
     
  • 3.47, n00by (ok), 09:23, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Оно так называется: драйвер-фильтр. https://en.wikipedia.org/wiki/Filter_driver
     

  • 1.31, Аноним (32), 01:28, 23/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Nobby или кто там, хотели срабатывание действия по отпусканию клавиш? Это решение для вас!
     
     
  • 2.43, Аноним (44), 07:42, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чел срабатывать на отпускание должны сами иксы. И это решается только патчем иксов. И только в силу админ ресурсов нельзя поменять изменение языка на отпускание по дефолту. А так штатный драйвер клавиатуры прекрасно сообщает что кнопка отпущена или зажата там проблем точно нет запусти тот же xev.
     
     
  • 3.46, n00by (ok), 09:19, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле первый эксперт почему-то забыл, что пользователи KDE (где "всё настраивается") хотели вызывать контекстное меню правой клавишей мыши не только по нажатию, но и по отпусканию. Изменить поведение - штатная возможность Qt и решается при помощи плагинов. Решается - в смысле, решено в Windows, а для KDE мой патч джва года валяется здесь на форуме, но для сборщиков пакетов он бесполезен, поскольку из конфига то он читает, а кнопку для записи конфига я не делал.

    diff --git a/src/platformtheme/khintssettings.cpp b/src/platformtheme/khintssettings.cpp
    index 6703eaf..91e6c3e 100644
    --- a/src/platformtheme/khintssettings.cpp
    +++ b/src/platformtheme/khintssettings.cpp
    @@ -89,6 +89,7 @@ KHintsSettings::KHintsSettings(const KSharedConfig::Ptr &kdeglobals)
         m_hints[QPlatformTheme::MouseDoubleClickInterval] = readConfigValue(cg, QStringLiteral("DoubleClickInterval"), 400);
         m_hints[QPlatformTheme::StartDragDistance] = readConfigValue(cg, QStringLiteral("StartDragDist"), 10);
         m_hints[QPlatformTheme::StartDragTime] = readConfigValue(cg, QStringLiteral("StartDragTime"), 500);
    +    m_hints[QPlatformTheme::ContextMenuOnMouseRelease] = readConfigValue(cg, QStringLiteral("ContextMenuOnMouseRelease"), 0);

         KConfigGroup cgToolbar(mKdeGlobals, "Toolbar style");
         m_hints[QPlatformTheme::ToolButtonStyle] = toolButtonStyle(cgToolbar);

     
     
  • 4.50, Аноним (25), 10:35, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем вообще показывать контекстное меню именно по отпусканию мыши? Там же все продумано: зажали правую кнопку мыши (ПКМ) и, не отпуская ПКМ, наводим мышь на пункт меню. Отпускаем ПКМ -- и вуаля, фактически одним кликом мыши и меню показали, и пункт меню активировали.
     
     
  • 5.51, n00by (ok), 10:54, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Зачем вообще показывать контекстное меню именно по отпусканию мыши?

    Зачем такую возможность обеспечили авторы библиотеки Qt? Очевидно, они удовлетворяли запросы пользователей библиотеки. В KDE достаточно дать возможность пользователю поставить "галочку", но почему-то при наличии 100500 настроек это не реализовано.

    > Там же все
    > продумано: зажали правую кнопку мыши (ПКМ) и, не отпуская ПКМ, наводим
    > мышь на пункт меню. Отпускаем ПКМ -- и вуаля, фактически одним
    > кликом мыши и меню показали, и пункт меню активировали.

    "Часто приходится иметь дело с обоими платформами и не могу назвать логику обработки клика по зажатому ПКМ - удобной. То курсор отведёшь до того как меню отрисует на старых железках, то ещё что. В итоге мисклик по пункту, который физически прочитать на успеваешь и хрен знает, что ты сейчас сделал."

    https://opennet.ru/openforum/vsluhforumID3/127955.html#55

     
     
  • 6.52, Аноним (25), 11:14, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > курсор отведёшь до того как меню отрисует на старых железках

    Такое железо надо отдавать в музей Поля Чудес. Ну или выработать в себе терпение: нажали ПКМ, отошли пить кофе, вернулись -- читаем меню.

    > Фиксят это аля отодвинем менюшку на пару пикселей, глядишь не нажмётся случайно

    Нормальный фикс, везде применяется.

     
     
  • 7.55, Аноним (55), 11:33, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А когда отошли пить кофе, кто будет продолжать нажимать ПКМ? Можно струбцину, конечно, приспособить :)
     
  • 7.63, n00by (ok), 15:15, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> курсор отведёшь до того как меню отрисует на старых железках
    > Такое железо надо отдавать в музей Поля Чудес. Ну или выработать в
    > себе терпение: нажали ПКМ, отошли пить кофе, вернулись -- читаем меню.

    Я понимаю, что сборщикам операционных систем плевать на хотелки пользователей. Не потому что первые плохие, а поскольку дописать 3 строки - это слишком сложно. Гораздо проще придумать под это обстоятельство массу красивых объяснений.

     
     
  • 8.67, Аноним (25), 16:46, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это не одноразовые три строки Это три строки, за которые берешь ответственность... текст свёрнут, показать
     
     
  • 9.72, n00by (ok), 10:09, 24/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да, гораздо проще придумать под это обстоятельство массу красивых объяснений ... текст свёрнут, показать
     
  • 6.53, Аноним (55), 11:31, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Может, KDE-разрабов об этом никто не просил ещё?
     
     
  • 7.64, n00by (ok), 15:16, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Может, KDE-разрабов об этом никто не просил ещё?

    Лень идти по вышеприведённой ссылке и откапывать там ссылки на багтрекер.

     
  • 3.56, Аноним (-), 12:15, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >  И только в силу админ ресурсов нельзя поменять изменение языка на отпускание по дефолту.

    Неа, дело не в админ ресурсе, а в том что эти чуваки хотят нарушить спецификацию.
    it's an _explicit_ violation of the XKB specification (see section 4.4).
    (bugzilla.freedesktop.org/show_bug.cgi?id=865)

    И ради чего? Чтобы у пары гиков заработали шорткаты в емаксе?
    Ну так пусть сами патчат. А в основные кода это не попадет примерно никогда.

     
     
  • 4.61, Аноним (59), 14:17, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Неа, дело не в админ ресурсе, а в том что эти чуваки хотят нарушить спецификацию.

    Поэтому вполне закономерно, что продукт с такой спецификацией должен быть выведен из эксплуатации.

     

  • 1.62, Аноним (62), 15:14, 23/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Люди говорят про кейлоггеры, а я вот хочу драйверы для специальных устройств ввода типа моей g800v.
     
     
  • 2.66, Пряник (?), 16:27, 23/04/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Фу, мембранка.
     

  • 1.65, Аноним (65), 16:15, 23/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Но уже сказать кому нибудь, чтобы выпускали телефоны и компы с одной программой, чтоб ни заменить, ни установить ничего нельзя было
    И чтобы переферия только одна подходила, от того же бренда
    В модельном ряду должны быть девыйсы для телеги, ютуба и прочего, самого популярного у домохозяек
    За подписку можно добавлять еще один сервис в дополнение к основному, как сейчас у сотовых операторов
    Вот тогда - заживем. И безопасно будет. Зачем домохозяйке возможность ставить программы?
    А если уж домохозяйка прошаренная, тогда пусть сдает экзамен на компьютерную грамотность и курс CS, и так уж быть, позволим ей печатать в терминал
     
  • 1.68, Аноним (68), 00:51, 24/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ввод есть, если сеть и графика из BPF будут доступны, то юзер-спейс становится не нужен - можно прямо туда прикладной софт писать, практически замена java и .net
     
     
  • 2.74, 3draven (ok), 19:40, 27/04/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Интересная мысль :) Взять либы гнома нижнего уровня и туда загнать на уровне ведра работать :)
     

  • 1.73, Аноним (73), 00:20, 27/04/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто нибудь напишет программу, чтобы работать с ней с повреждённым экраном или сенсором?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру