
X pode fazer capturas de tela de toda a área de trabalho. Gostaria de detectar essas chamadas à medida que são feitas, mas por meio de algo como ebpf ou sysdig, em vez de corrigir as chamadas no nível do servidor. Como posso fazer isso e existe um programa que também pode fazer isso?
Responder1
[mais um comentário do que uma resposta, mas muito longo para um comentário]
Um programa que faça isso terá que se conectar às chamadas X11 no nível do servidor (através de um mecanismo comoXACE
, ~ assim como ebpf ou sysdig fazem com as chamadas no kernel). Não conheço nada pronto fazendo isso, mas não pesquisei muito sobre o assunto ;-)
Se você deseja apenas monitorar as solicitações realizadas por um cliente X11, você pode usar o comandoRECORD
extensão (comoxtruss
faz) ou forçar o cliente através do proxy X11 comoxscope
e procure por quaisquer solicitações CopyArea
, GetImage
, etc usando a janela raiz como fonte (ou qualquer janela/pixmap NÃO pertencente a esse cliente).
Em geral, ficar obcecado com a possibilidade de um aplicativo X11 fazer "capturas de tela" é bastante inútil, já que qualquer programa com acesso a um servidor X11 pode fazer muito mais e, se não for confiável, NÃO deve ser deixado perto dele. Além disso, os processos locais executados no mesmo usuário também podem ptrace(2)
ler a memória um do outro diretamente.
Responder2
Sim, prefiro estar mais focado em outras coisas do que me perguntar se um aplicativo X11 está fazendo capturas de tela, mas pensei em coçar essa coceira por enquanto.
Não parece haver nenhum material sobre como escrever esses ganchos x11 na web, mas vou dar uma olhada no xtruss.
Estou executando o xtruss no momento. Usando os IDs X que obtive de xwininfo -root -tree, estou configurando o xtruss para monitorar esse recurso. No entanto, quando faço um arquivo xwd -i -out, o xtruss não informa nada. A metodologia de teste está errada?