
X puede hacer capturas de pantalla de todo el escritorio. Me gustaría detectar estas llamadas a medida que se realizan, pero a través de algo como ebpf o sysdig, en lugar de parchear las llamadas a nivel del servidor. ¿Cómo puedo hacer esto? ¿Existe algún programa que pueda hacerlo también?
Respuesta1
[más un comentario que una respuesta, pero demasiado largo para un comentario]
Un programa que haría eso tendrá que conectarse a las llamadas X11 a nivel de servidor (a través de un mecanismo comoXACE
, ~ tal como lo hacen ebpf o sysdig con las llamadas en el kernel). No conozco nada ya hecho que haga eso, pero tampoco investigué demasiado sobre el tema ;-)
Si desea simplemente monitorear las solicitudes realizadas por un cliente X11, puede usar elRECORD
extensión (comoxtruss
lo hace) o forzar al cliente a través del proxy X11 comoxscope
y busque cualquier solicitud CopyArea
, GetImage
etc. utilizando la ventana raíz como fuente (o cualquier ventana/mapa de píxeles que NO sea propiedad de ese cliente).
En general, obsesionarse con que una aplicación X11 pueda hacer "capturas de pantalla" es bastante inútil, ya que cualquier programa con acceso a un servidor X11 puede hacer mucho más, y si no es de confianza NO debe dejarse cerca de él. Además, los procesos locales que se ejecutan bajo el mismo usuario también pueden ptrace(2)
leerse la memoria de los demás directamente.
Respuesta2
Sí, prefiero concentrarme más en otras cosas que preguntarme si una aplicación X11 está tomando capturas de pantalla, pero pensé en calmarme por ahora.
No parece haber ningún material sobre cómo escribir estos ganchos x11 en la web, pero investigaré xtruss.
Estoy ejecutando xtruss en este momento. Usando los ID de X que obtuve de xwininfo -root -tree, estoy configurando xtruss para monitorear ese recurso. Sin embargo, cuando hago un archivo xwd -i -out, xtruss no informa nada. ¿Está mal la metodología de prueba?