
X может делать снимки экрана всего рабочего стола. Я бы хотел обнаруживать эти вызовы по мере их совершения, но через что-то вроде ebpf или sysdig, а не патчить вызовы на уровне сервера. Как это сделать и есть ли программа, которая может это делать?
решение1
[скорее комментарий, чем ответ, но слишком длинно для комментария]
Программа, которая будет это делать, должна будет подключиться к вызовам X11 на уровне сервера (через механизм вродеXACE
, ~ так же, как ebpf или sysdig делают с вызовами в ядре). Я не знаю ничего готового, делающего это, но я и не особо изучал этот вопрос ;-)
Если вы хотите просто отслеживать запросы, выполняемые клиентом X11, вы можете использоватьRECORD
расширение (какxtruss
делает) или принудительно подключать клиента через прокси X11, напримерxscope
и найдите любые запросы CopyArea
, GetImage
, и т. д., использующие корневое окно в качестве источника (или любое окно/пиксельную карту, НЕ принадлежащую этому клиенту).
В общем, зацикливаться на том, что приложение X11 может делать "скриншоты", довольно бессмысленно, поскольку любая программа с доступом к серверу X11 может делать гораздо больше, и если ей не доверяют, ее НЕ следует оставлять где-либо рядом с ним. Кроме того, локальные процессы, запущенные под одним и тем же пользователем, также могут взаимодействовать ptrace(2)
друг с другом и напрямую читать память друг друга.
решение2
Да, я бы предпочел сосредоточиться на других вещах, чем на размышлениях о том, делает ли приложение X11 скриншоты, но я подумал, что на данный момент стоит почесать эту дыру.
Похоже, в сети нет никаких материалов о том, как писать эти хуки x11, но я посмотрю на xtruss.
В данный момент я запускаю xtruss. Используя X id, которые я получил из xwininfo -root -tree, я настраиваю xtruss на мониторинг этого ресурса. Однако, когда я делаю файл xwd -i -out, xtruss ничего не сообщает. Неверна ли методология тестирования?