Come sapere se la mia webcam è utilizzata o no?


14

Quale comando mi consente di sapere se la mia webcam è utilizzata o no?

lsof /dev/video0non è sufficiente. Tutti i dispositivi a blocchi con numero maggiore e minore 81 e 0 devono essere monitorati.


2
+1. TIL lsof(e fuser) non fa di default ciò di cui hai bisogno.
Celada,

@celada potresti spiegarmi per favore?
YoungFrog,

Quali sono le tue preoccupazioni? Ti sta guardando un video o sei anche preoccupato per l'audio (nel qual caso coprire l'obiettivo non risolverebbe il tuo problema)? O si tratta di debug o anche di curiosità? #
Chris H,

@YoungFrog Mi stavo solo complimentando con l'OP per questa domanda perché mi ha fatto imparare qualcosa. Inizialmente supponevo che lsof /dev/video0tutti i processi che contenevano un descrittore di file aperto fossero collegati all'oggetto kernel vfs a cui si /dev/video0riferisce, indipendentemente dal percorso del file system utilizzato per aprirlo, ma la domanda dell'OP chiarisce che ciò non è vero.
Celada,

Risposte:


15

Se il tuo kernel usa i moduli (che è altamente probabile), un modo per determinare se un programma sta accedendo alla tua webcam è quello di esaminare il conteggio di utilizzo del modulo:

$ lsmod | grep uvcvideo
uvcvideo               90112  0

Lo 0 nel terzo campo mostra che nulla ha alcun dispositivo aperto per una uvcvideowebcam controllata (quando lsmodeseguita). Ovviamente devi sapere esattamente quale modulo è responsabile della tua webcam; è facile da controllare, vedrai che l'output cambia durante l'esecuzione di un programma come Cheese.

Si noti che, a rigor di termini, un conteggio positivo significa solo che qualcosa ha aperto un dispositivo, non significa che le immagini vengano acquisite.


Un conteggio positivo non significa solo che qualcosa ha aperto un dispositivo del genere ora , al contrario di aprirlo per una frazione di secondo per catturare un'immagine e poi chiuderla? Con un tale schema di utilizzo, dovresti essere incredibilmente fortunato a prenderlo sul serio.
un CVn

@ MichaelKjörling è per questo che ho citato "quando lsmodeseguito". Merita l'espansione dato lo scenario che dai (anche se nella mia esperienza, le latenze delle fotocamere sono abbastanza alte da aprire il dispositivo, catturare un'immagine e chiudere il dispositivo). Guardare l'utilizzo del dispositivo usando fusero lsofsoffre dello stesso problema però; un approccio più solido richiederebbe di collegare le API V4L usando punti di traccia o qualcosa di simile.
Stephen Kitt,

@ MichaelKjörling In effetti. Per acquisire questo modello di utilizzo, dovresti monitorare gli accessi ai file del dispositivo, non solo controllarli in un determinato momento.
Gilles 'SO- smetti di essere malvagio' il

7

Supponendo che ciò che si desidera effettivamente sia assicurarsi che la propria webcam non venga utilizzata quando non si desidera , la soluzione più semplice è semplicemente disconnetterla (se esterna) quando non è necessaria. O coprendo la webcam (solo un pezzo di nastro adesivo avrebbe funzionato).

Gli approcci basati sul fisico sono molto più sicuri di quelli del software.


1
Il nastro non blocca il microfono, che può (anche su una webcam integrata) essere strutturato come parte della videocamera piuttosto che attraverso un modulo audio.
Chris H,

Vorrei sconsigliare vivamente il nastro adesivo in quanto potrebbe facilmente lasciare un residuo. Ho usato del nastro chirurgico (disponibile nei negozi di droga) perché lascia pochissimi residui quando viene rimosso, con un piccolo adesivo che copre l'obiettivo, dal lato adesivo al lato appiccicoso. In questo modo non vi è alcun rischio di residui di colla sull'obiettivo. È, certamente, una soluzione che è leggermente sul lato permanente; non vuoi toglierti e rimetterti il ​​nastro continuamente.
un CVn

@ChrisH che non ha alcun senso (ironicamente, la tua SE superiore è l'inglese ...) Cosa intendi?
theonlygusti,

@theonlygusti intendevo modulo come in un pezzo di hardware; ovviamente su questo thread sarebbe più logico leggerlo come software di significato, il che non avrebbe molto senso. Il nastro non blocca il microfono. Un microfono può far parte dell'hardware della webcam, anziché o in aggiunta a tutto ciò che è collegato tramite la scheda audio (un termine che stavo evitando a causa dell'hardware SoC). Quindi, per determinare se la webcam è abilitata / attiva / spionaggio potresti essere preoccupato per qualcosa di più del semplice obiettivo. Ma l'unico sistema Linux che ho qui è un Chromebook (crostino), quindi un po 'limitato.
Chris H,

1
Certo, ma non era questa la domanda
Gilles 'SO- smetti di essere malvagio' il

7

Su qualsiasi sistema sano, a meno che tu non abbia impostato i chroot con i propri /dev, tutti i file del dispositivo sono sotto /dev. Solo root può creare file di dispositivi, quindi non devi preoccuparti che utenti malintenzionati creino file di dispositivi altrove.

Quindi tutto ciò che devi fare è individuare i file /devche si riferiscono allo stesso dispositivo di quello a cui sei interessato.

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

È probabile che questo mostrerà solo /dev/video0. Di solito, esiste un singolo file del dispositivo per ogni dispositivo e probabilmente ci sono collegamenti simbolici aggiuntivi ad esso.

Quindi la risposta pratica alla tua domanda è quella semplice. Controlla quali processi hanno il file del dispositivo aperto.

fuser /dev/video0

Se si desidera monitorare gli accessi (ovvero i processi di cattura che possono aprire il file del dispositivo in qualsiasi momento), utilizzare uno dei metodi di monitoraggio dell'accesso ai file Linux sui file del dispositivo: impostare un orologio (e verificare quali processi hanno già il dispositivo file aperti)

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

o impostare una regola di controllo che registrerà gli accessi nei registri di sistema (in genere /var/log/audit/audit.log)

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

Buon punto! Ma soffre ancora del problema temporaneo della soluzione di Angel! (Cfr. Commenti lì). La soluzione software più robusta è probabilmente quella di inserire nella blacklist quel dispositivo in udevmodo da non ottenere un file del dispositivo all'avvio; quindi aggiungi un file dispositivo se e quando prevedi di utilizzare la fotocamera ... o scollegalo fisicamente.
jpaugh

@jpaugh La domanda era trovare i processi usando la webcam, non disabilitare la webcam.
Gilles 'SO- smetti di essere malvagio' il

Dovrebbe essere monitorato a livello di kernel. Un dispositivo può essere aggiunto ovunque: ad es.mknod /root/video0 b 81 0
user123456

@ j658063.mvrht.com Ma solo root può farlo. Se root non fa cose stupide, allora sei al sicuro. Se root fa cose stupide, sei comunque fregato: root può anche cambiare il kernel per nascondere alcuni processi.
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.