Como saber se minha webcam é usada ou não?

13

Qual comando me permite saber se minha webcam é usada ou não?

lsof /dev/video0 não é suficiente. Todos os dispositivos de bloco com maior e menor número 81 e 0 devem ser monitorados.

    
por user123456 12.02.2017 / 20:04

3 respostas

13

Se o seu kernel usa módulos (o que é altamente provável), uma maneira de determinar se um programa está acessando sua webcam é observar a contagem de uso do módulo:

$ lsmod | grep uvcvideo
uvcvideo               90112  0

O 0 no terceiro campo mostra que nada tem nenhum dispositivo aberto para uma webcam uvcvideo controlada (quando lsmod foi executado). Claro que você precisa saber exatamente qual módulo é responsável pela sua webcam; É fácil verificar, porém, você verá a mudança de saída durante a execução de um programa como o Cheese.

Note que, estritamente falando, uma contagem positiva significa apenas que algo abriu um dispositivo, isso não significa que as imagens estão sendo capturadas.

    
por 12.02.2017 / 20:48
7

Assumindo que o que você realmente quer é ter certeza de que sua webcam não está sendo usado quando você não quer que ele , a solução mais simples é simplesmente desconectá-lo (se externo) quando não for necessário. Ou cobrindo a webcam (apenas um pedaço de fita adesiva funcionaria).

As abordagens baseadas na física são muito mais seguras do que as do software.

    
por 13.02.2017 / 01:41
7

Em qualquer sistema sã, a menos que você tenha configurado chroots com seus próprios /dev , todos os arquivos do dispositivo estarão em /dev . Apenas o root pode criar arquivos de dispositivos, portanto você não precisa se preocupar com usuários mal-intencionados que criam arquivos de dispositivos em outro lugar.

Portanto, tudo o que você precisa fazer é localizar os arquivos em /dev que se referem ao mesmo dispositivo que você está interessado.

ls -lR /dev |awk '/^c/ && $5 == "81," && $6 == "0"'

É provável que isso mostre apenas /dev/video0 . Normalmente, há um único arquivo de dispositivo para cada dispositivo e possivelmente há links simbólicos adicionais para ele.

Assim, a resposta prática à sua pergunta é simples. Basta verificar quais processos têm o arquivo do dispositivo aberto.

fuser /dev/video0

Se você quiser monitorar acessos (isto é, capturar processos que possam abrir o arquivo do dispositivo a qualquer momento), use um dos métodos de monitoramento de acesso a arquivos no (s) arquivo (s) de dispositivo: configure um relógio (e verifique quais processos já possuem o (s) arquivo (s) de dispositivo aberto (s)

inotifywait -m -e open,close /dev/video0 &
sleep 1; fuser /dev/video0   # check for processes that have already opened the device

ou configurar uma regra de auditoria que registrará acessos nos registros do sistema (geralmente /var/log/audit/audit.log )

auditctl -w path=/dev/video0 &
sleep 1; fuser /dev/video0   # check for processes that have already opened the device
    
por 13.02.2017 / 00:06

Tags