Питер Хаттерер (Peter Hutterer), мэйнтейнер подсистемы ввода X.Org, работающий в Red Hat, представил новую утилиту udev-hid-bpf, предназначенную для автоматической загрузки BPF-программ, исправляющих проблемы в устройствах ввода с интерфейсом HID (Human Input Device) или меняющих их поведение в зависимости от предпочтений пользователя. Для создания обработчиков к HID-устройствами, таким как клавиатуры и мыши, применяется подсистема HID-BPF, появившаяся в ядре Linux 6.3 и позволяющая создавать драйверы устройств ввода в форме BPF-программ или обрабатывать различные события в подсистеме HID...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=61046
Почему бы открыто не написать что это сделано чтобы писать надёжные кейлогеры, которые работают даже в вейленде?
А давайте б..., задействуем еще DSP звуковой карты для потоковой обработки с устройства ввода, чтоб снять нагрузку с процессора и только потом передадим данные в БПФ а у ж оттуда в драйвер, чтоб точно никто не догадался где подглючивает и куда по дорогк сливает. А то добавлять параметр в драйвер - это же так скуууучно...
Давайте!
https://www.opennet.dev/man.shtml?topic=as10k1
https://manpages.ubuntu.com/manpages/trusty/en/man8/ld10k1.8...
https://github.com/kxproject/
PS Основное применение EMU10K1 и 2 - это HRIR/HRTF, ибо миддлвари для EAX опенсорсной нет, да и поддержку в софте дропнули. Как и поддержку аппаратного миди, хотя у него поддержка на порядки лучше, прямо в пайпвайре есть, но ... вместо него хламософт использует fluidsynth, причём обязательно статически прилинкованный.
> А давайте б..., задействуем еще DSP звуковой карты для потоковой обработки
> с устройства ввода, чтоб снять нагрузку с процессора и только потом передадим данные в БПФТак то если утрировать - можете выбросить GPU и считать все на CPU, а то что 5 FPS'ов получается - так может хрен с ней, с нагрузкой на проц то? :)
Зато юниксвейно — в компьютере считать должна только одна микросхема!
> Почему бы открыто не написать что это сделано чтобы писать надёжные кейлогеры, которые работают даже в вейленде?Но ведь для этого уже давно и с успехом используется механизм LKM?
Модуль ещё собрать нужно под каждое уникальное ядро. А здесь гарантированная (обратная) совместимость.
Вот в этом и есть главная ОПАСНОСТЬ байткода для ядра. Начнут же вновь обращённые линуксоиды из подоконников тянуть ото всюду эти байткоды без регистрации и СМС. Так-то модули из исходников собирать это для них хоть было Racket Science.
Ну, если человек пришел из подоконников не вчера, а хотя бы позавчера, то он знает про dkms.
Ну, если человек знает, что такое dkms, а не просто где-то слышал красивый buzzword, то он понимает, что dkms, сам по себе, никак не решает проблему несовместимости API разных версий ядра, это просто инфраструктура.
Зато прекрасно решает проблему несовместимости ABI, позволяя собирать модули одной командой, безо всяких "руцкет сцаенц".
Если вы готовы сопровождать свой кейлоггер для каждой новой версии ядра, то пожалуйста. Но в топике злоумышленнику предлагают более экономичный и "ненапряжный" вариант: раз написал и забыл.
И не только злоумышленнику. Но в данной ситуации выгоднее думать только о злоумышленниках.
Потому что это не работа пользователя исправлять косяки в устройствах, продающихся на рынке. А корпоративных инженеров на зарплате.
Чтобы не быть голословным: https://aur.archlinux.org/packages/nvidia-390xx-dkms
Посмотрите, сколько kernel-$(uname -r).patch потребовалось написать, чтобы недавно брошенный зонд от невидии продолжал работать с разными версиями ядер.
Остаётся только надеяться, что им не удастся приспособить под свои цели BPF, иначе жизнь пользователей станет слишком простой. А с этим ветераны юникс-воя смириться не смогут.
> жизнь пользователейА что изменится? Пользователь сидит на всём готовом. Сопроводителю поправить/пересобрать открытые сорцы не проблема. А вот копровендоры как не хотели нормально поддерживать свои железки и раскрывать исходники, хотя бы, по окончании поддержки, так и не хотят.
Вот утопающие и спасают себя костылями и припарочками, попутно ломая всё вокруг, вместо раздачи воспитательно-регулирующих поджопников оборзевшим хозяйчикам.
А если сопроводителю будет легче, то пользователю будет ещё больше готового, а это очень-очень плохо, потому что пользователь должен страдать (и сопроводитель тоже, но главное — пользователь).
Я правильно вас понял?
> сопроводителю будет легче,Если Невидия будет самостоятельно, в кодовой базе ядра, сопровождать свои модули для всех железок, которые ещё не вышли из эксплуатации. Или, хотя бы, откроет исходный код libGLX_nvidia.so.390.157, чтобы можно было её пересобрать со свежей glibc, чтобы избавится от ряда проблем. Или... Вот тогда и пользователю, и сопроводителю, и такой-то матери будет легко, веселО и замечательно. Но шерифа проблемы индейцев не ... Так понятнее?
рэкет ученых это пять
> Модуль ещё собрать нужно под каждое уникальное ядро. А здесь гарантированная (обратная) совместимость.Похоже, Линусу с его stable ABI is nonsense придётся самому сесть на собственный палец.
> Почему бы открыто не написать что это сделано чтобы писать надёжные кейлогеры, которые работают даже в вейленде?Потому, что это сделано, чтобы исправлять последствия халтуры за зарплату бизнеса.
Так и сейчас вроде можно простым cat /dev/input/eventX логгировать нужные эвенты.
штатный интерфейс для малваре! как иновационно!
> мэйнтейнер подсистемы ввода X.Orgмне любители вялого сказали, что оно умерло и там уже никого не осталось
> мне любители вялого сказали, что оно умерло и там уже никого не осталосьИксы — это шляпа. А шляпа пока жива.
Теперь она будет жива, пока живо ИБМ.
>> мэйнтейнер подсистемы ввода X.Org
> мне любители вялого сказали, что оно умерло и там уже никого не осталосьФанатики. Религия. Они такие.
Опять бекдор под видом благих намерений пытались внедрить
Ничего, любителям иксов не привыкать. У них каждая программа может включить кейлоггер. Какой-нибудь дискорд может кейлоггерить, что ты там набираешь в VSCode, какой-нибудь VSCode может заскриншотить окно биткоин-кошелька и отправить в микрософт, а биткоин-кошелек может снять видео твоих действий в браузере. В вяленом ничего из этого невозможно, так как клиенты изолированы друг от друга.
> любителям иксов не привыкатьЛюбители иксов и не привыкают. Привыкают любители вялого. К ограничениям и проблемам под сказки о безопафосности. А иксами люди просто пользуются, потому что на них всё работает.
А для биткойна пускают отдельный икс-сервер на отдельном пользователе. Потому что зачем тебе кейлоггер, когда любой процесс, запущенный с правами того же пользователя, может запросто прочитать кэш пароля или даже весь кошелек из памяти процесса или файловой системы и отправить в /dev/thief?
Запомните, дети, безопасность -- это модель угроз, а не волшебные программы из магазина, "безопасные, мамой клянусь".
Меня спасёт святой антивирус!
> Какой-нибудь дискорд может кейлоггерить, что ты там набираешь в VSCode, какой-нибудь VSCode может заскриншотить окно биткоин-кошелька и отправить в микрософт, а биткоин-кошелек может снять видео твоих действий в браузереС такой логикой, любая программа и без вяленого может прочитать любой файл в твоем home. Что ж теперь делать-то?
С чего вдруг VSCode скриншотить, а биткоин-кошельку записывать видео? Если же ты уже поставил и запустил левый скомпрометированный кошелек из Snap Store (ты же читал новости?) то теббе по-любому конец - он и без вяленого стырит твои деньги.
Не знаю с чего вдруг, но скриншоты от тебя мне уже пришли.
> С такой логикой, любая программа и без вяленого может прочитать любой файл в твоем home. Что ж теперь делать-то?Защищать локально хранимые БД паролей мастер-паролем, использовать пароли для SSH и PGP ключей?
Да не, бред какой-то.
В ссылки на релевантные новости добавьте новость про Ревуа, у него в блоге как раз упоминалось, что его проблему можно было бы "пофиксить" этим способом.
напоминает технологию драйверов фильтров для ядра NT
Фильтров чего?
Оно так называется: драйвер-фильтр. https://en.wikipedia.org/wiki/Filter_driver
Nobby или кто там, хотели срабатывание действия по отпусканию клавиш? Это решение для вас!
Чел срабатывать на отпускание должны сами иксы. И это решается только патчем иксов. И только в силу админ ресурсов нельзя поменять изменение языка на отпускание по дефолту. А так штатный драйвер клавиатуры прекрасно сообщает что кнопка отпущена или зажата там проблем точно нет запусти тот же xev.
На самом деле первый эксперт почему-то забыл, что пользователи 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);
Зачем вообще показывать контекстное меню именно по отпусканию мыши? Там же все продумано: зажали правую кнопку мыши (ПКМ) и, не отпуская ПКМ, наводим мышь на пункт меню. Отпускаем ПКМ -- и вуаля, фактически одним кликом мыши и меню показали, и пункт меню активировали.
> Зачем вообще показывать контекстное меню именно по отпусканию мыши?Зачем такую возможность обеспечили авторы библиотеки Qt? Очевидно, они удовлетворяли запросы пользователей библиотеки. В KDE достаточно дать возможность пользователю поставить "галочку", но почему-то при наличии 100500 настроек это не реализовано.
> Там же все
> продумано: зажали правую кнопку мыши (ПКМ) и, не отпуская ПКМ, наводим
> мышь на пункт меню. Отпускаем ПКМ -- и вуаля, фактически одним
> кликом мыши и меню показали, и пункт меню активировали."Часто приходится иметь дело с обоими платформами и не могу назвать логику обработки клика по зажатому ПКМ - удобной. То курсор отведёшь до того как меню отрисует на старых железках, то ещё что. В итоге мисклик по пункту, который физически прочитать на успеваешь и хрен знает, что ты сейчас сделал."
> курсор отведёшь до того как меню отрисует на старых железкахТакое железо надо отдавать в музей Поля Чудес. Ну или выработать в себе терпение: нажали ПКМ, отошли пить кофе, вернулись -- читаем меню.
> Фиксят это аля отодвинем менюшку на пару пикселей, глядишь не нажмётся случайно
Нормальный фикс, везде применяется.
А когда отошли пить кофе, кто будет продолжать нажимать ПКМ? Можно струбцину, конечно, приспособить :)
>> курсор отведёшь до того как меню отрисует на старых железках
> Такое железо надо отдавать в музей Поля Чудес. Ну или выработать в
> себе терпение: нажали ПКМ, отошли пить кофе, вернулись -- читаем меню.Я понимаю, что сборщикам операционных систем плевать на хотелки пользователей. Не потому что первые плохие, а поскольку дописать 3 строки - это слишком сложно. Гораздо проще придумать под это обстоятельство массу красивых объяснений.
> дописать 3 строки - это слишком сложноЭто не одноразовые три строки. Это три строки, за которые берешь ответственность: перед всяким релизом нужно проверять, что они продолжают работать, это плюс один пункт в тест-план тестировщикам. Это нужно проверять также и после каждого обновления Qt. Это плюс один риск того, что слетят юнит-тесты (ах да, нужно написать плюс один юнит-тест). Это плюс одна фраза в GUI, которую надо перевести на сотню языков. Это плюс одна переменная, которая неясно, как себя поведет в каждом конкретном месте по всему DE, и применится ли она ко всему подряд: ожидай появления целого нового класса багрепортов на ровном месте.
Да, "гораздо проще придумать под это обстоятельство массу красивых объяснений."> Это нужно проверять также и после каждого обновления Qt.
Нет, не нужно. Учитесь программировать или хотя бы читать документацию Qt, что бы не писать такую чушь.
Может, KDE-разрабов об этом никто не просил ещё?
> Может, KDE-разрабов об этом никто не просил ещё?Лень идти по вышеприведённой ссылке и откапывать там ссылки на багтрекер.
> И только в силу админ ресурсов нельзя поменять изменение языка на отпускание по дефолту.Неа, дело не в админ ресурсе, а в том что эти чуваки хотят нарушить спецификацию.
it's an _explicit_ violation of the XKB specification (see section 4.4).
(bugzilla.freedesktop.org/show_bug.cgi?id=865)И ради чего? Чтобы у пары гиков заработали шорткаты в емаксе?
Ну так пусть сами патчат. А в основные кода это не попадет примерно никогда.
> Неа, дело не в админ ресурсе, а в том что эти чуваки хотят нарушить спецификацию.Поэтому вполне закономерно, что продукт с такой спецификацией должен быть выведен из эксплуатации.
Люди говорят про кейлоггеры, а я вот хочу драйверы для специальных устройств ввода типа моей g800v.
Фу, мембранка.
Но уже сказать кому нибудь, чтобы выпускали телефоны и компы с одной программой, чтоб ни заменить, ни установить ничего нельзя было
И чтобы переферия только одна подходила, от того же бренда
В модельном ряду должны быть девыйсы для телеги, ютуба и прочего, самого популярного у домохозяек
За подписку можно добавлять еще один сервис в дополнение к основному, как сейчас у сотовых операторов
Вот тогда - заживем. И безопасно будет. Зачем домохозяйке возможность ставить программы?
А если уж домохозяйка прошаренная, тогда пусть сдает экзамен на компьютерную грамотность и курс CS, и так уж быть, позволим ей печатать в терминал
ввод есть, если сеть и графика из BPF будут доступны, то юзер-спейс становится не нужен - можно прямо туда прикладной софт писать, практически замена java и .net
Интересная мысль :) Взять либы гнома нижнего уровня и туда загнать на уровне ведра работать :)
Кто нибудь напишет программу, чтобы работать с ней с повреждённым экраном или сенсором?