¿Cómo mostrar una notificación cuando se enciende la cámara web iSIght?

¿Es posible recibir una notificación en el escritorio cuando mi iSight se enciende? Sería óptimo si esto pudiera pasar por Growl, pero probé HardwareGrowler y no me da una notificación.

Sé que la luz verde siempre se enciende cuando se enciende el iSight, pero cuando se enciende el iSight solo por un segundo, es posible que no esté mirando la pantalla y que se me escape la luz verde, de ahí una notificación que se queda en la pantalla hasta que cierre sería lo óptimo.

Estoy en una MacBook Pro 5,3 y tengo Mountain Lion 10.8.3.

Supongo que se accede al controlador iSight cada vez. Suponiendo que su sistema de archivos tiene un tiempo habilitado (lo hace de manera predeterminada), puede verificar cuándo se accedió por última vez a ese controlador de esta manera: ls -lu /System/Library/Quicktime/QuickTimeUSBVDCDigitizer.component/Contents/MacOS/QuickTimeUSBVDCDigitizer | awk '{print $6,$7,$8}'. Escriba un script que combine eso con growlnotify y haga que se ejecute en segundo plano. Ta-daa!
Copié y pegué la línea de código en la terminal y obtuve:No such file or directory
@BartArondson Dado que es un comando tan largo, existen algunos problemas con el formato al copiarlo. Entonces navegue manualmente a este directorio y ejecute ls -luo copie el comando completo desde aquí . Intentaré que la solución funcione con Growl, pero no esperes que llegue hoy. Tal vez alguien más es más rápido que yo...
Gracias, el comando de enlace de Dropbox funciona. Sin embargo, ejecutar el comando me muestra una fecha y una hora en las que no usé mi iSight. Además, encender Photo Booth (también el iSight), apagarlo nuevamente y ejecutar el comando no cambia la fecha que se muestra. Entonces parece que el comando no funciona como se esperaba. Una solución funcional sería genial, pero no hay prisa, hice esta pregunta en enero, podría esperar un poco más.
He escrito una aplicación AppleScript que notificará si se accede a un archivo. Puedes descargarlo aquí . El intervalo para detectar un acceso es de 10s. Sin embargo, el verdadero problema es saber a qué archivo se accede únicamente cuando se usa la cámara. Mientras no sepamos eso, esta aplicación es inútil. En este momento se notifica sobre un acceso a /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera.
Gracias. ¿Hay alguna forma de averiguar a qué archivos se accede cuando se enciende la iSight? ¿Puedo de alguna manera rastrear eso en Terminal?
Revisé los archivos abiertos y los puertos en el Monitor de actividad (a través de Inspeccionar) y encontré los archivos que Skype (mientras usaba iSight) y Photo Booth abren. Los enumeré a ambos, los comparé y extraje los archivos que abren ambos programas. Se enumeran aquí . Uno de estos archivos debe ser exclusivo para el uso de iSight. Probé el de la línea 12 (..../MacOS/VDC), lo pegué en su secuencia de comandos y parece funcionar. Cuando Skype, PhotoBooth, FaceTime o una aplicación web Flash usan la iSight, recibo una notificación.
El archivo que mencioné anteriormente es el que necesito. Acabo de probar otras aplicaciones que usan iSight y cada vez recibí una notificación de Growl. Muchas gracias por su ayuda, si publica una respuesta con la modificación sugerida, la aceptaré.
Si esto es realmente lo que es, estoy muy contento de que haya funcionado. Voy a publicar una respuesta pronto y haré un pequeño cambio en el .plistarchivo para que la aplicación se ejecute como un agente en segundo plano (sin icono de base).

Respuestas (2)

Con la ayuda de la documentación de Growl sobre la compatibilidad con AppleScript y una pequeña discusión con Bart Arondson y Elliot B en los comentarios sobre la pregunta, se me ocurrió el siguiente AppleScript.

Guardé este script como un agente de aplicación que puede agregar a sus elementos de inicio de sesión en Preferencias del sistema → Usuarios y grupos → Elementos de inicio de sesión .

Básicamente, esta aplicación funciona detectando si se está accediendo a un ejecutable único relacionado con el uso de la cámara. Siempre que se acceda al ejecutable, la aplicación se lo notificará a Growl:

ingrese la descripción de la imagen aquí

Descargar

Es importante saber que este script monitorea el acceso al ejecutable...

/System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC

Guión completo

-- check if growl is running in order to avoid the "Choose Application" dialog
tell application "System Events"
    set isRunning to (count of (every process whose bundle identifier is "com.Growl.GrowlHelperApp")) > 0
end tell

-- store time of last iSight access
global lastopened
set lastopened to do shell script "ls -lu /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC | awk '{print $6,$7,$8}'"

-- make the application ready for use with growl
if isRunning then
    tell application id "com.Growl.GrowlHelperApp"

        -- make a list of all the notification types that this script will ever send
        set the allNotificationsList to ¬
            {"iSight access monitor"}

        -- register the script with growl
        register as application ¬
            "iSight access monitor" all notifications allNotificationsList ¬
            default notifications allNotificationsList ¬
            icon of application "FaceTime"

        -- send the first notification right after the application is started
        notify with name ¬
            "iSight access monitor" title ¬
            "iSight access monitor" description ¬
            "last iSight access: 
" & lastopened application name "iSight access monitor"
    end tell
end if

-- monitoring routine: checks every 10s if the VDC executable has been accessed
on idle
    tell application id "com.Growl.GrowlHelperApp"
        set newopen to do shell script "ls -lu /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC | awk '{print $6,$7,$8}'"
        if (newopen is not equal to lastopened) then
            notify with name ¬
                "iSight access monitor" title ¬
                "iSight access monitor" description ¬
                "new iSight access: 
" & newopen application name "iSight access monitor"
            set lastopened to newopen
        end if
    end tell
    return 10 -- interval in seconds
end idle
Ah, me regocijé demasiado pronto. Citrix Viewer, un cliente de escritorio remoto, también accede al VDCarchivo cuando se abre. Tiene sentido ya que puede necesitar acceso a la cámara, pero esto hace que esta solución sea menos perfecta.
@BartArondson Es una pena. Espero que algún desarrollador de Mac con conocimientos se tope con esta pregunta y pueda mejorar aún más la respuesta en el futuro.

Micro Snitch hace exactamente lo que estaba buscando:

¿Alguna vez se preguntó si una aplicación graba audio a través del micrófono integrado de su Mac sin su conocimiento? ¿O si la cámara captura video sin una buena razón?

Con Micro Snitch ya no hay dudas. Esta aplicación de barra de menú ultraligera funciona discretamente en segundo plano. Supervisa e informa cualquier actividad de micrófono y cámara para ayudarlo a descubrir si alguien lo está espiando.

No es gratis (4,50 € en el momento de escribir este artículo), pero creo que merece la pena.

Sin afiliación, solo un usuario feliz.