웹캠 사용 여부를 어떻게 알 수 있습니까? /dev/video0충분하지 않습니다. 주 번호와 부 번호 81과

웹캠 사용 여부를 알 수있는 명령은 무엇입니까?

lsof /dev/video0충분하지 않습니다. 주 번호와 부 번호 81과 0을 가진 모든 블록 장치를 모니터링해야합니다.



답변

커널이 모듈을 사용하는 경우 (아마도) 프로그램이 웹캠에 액세스하고 있는지 확인하는 한 가지 방법은 모듈의 사용 횟수를 확인하는 것입니다.

$ lsmod | grep uvcvideo
uvcvideo               90112  0

세 번째 필드의 0은 uvcvideo제어 된 웹캠 ( lsmod실행시)에 열려있는 장치가 없음을 나타냅니다 . 물론 웹캠을 담당하는 모듈을 정확히 알아야합니다. 그러나 쉽게 확인할 수 있습니다. Cheese와 같은 프로그램을 실행하는 동안 출력이 변경되는 것을 볼 수 있습니다.

엄밀히 말하면 양의 카운트는 무언가가 장치를 연 것을 의미한다는 것만으로 이미지가 캡처되는 것은 아닙니다.


답변

실제로 원하지 않는 경우 웹캠 을 사용하지 않는 것이 가장 간단한 방법 이라고 가정 할 때 가장 간단한 해결책은 필요하지 않은 경우 웹캠 을 연결 해제하는 것입니다 (외부인 경우). 또는 웹캠을 덮습니다 (덕트 테이프 조각 만 작동).

물리 기반 접근 방식은 소프트웨어 접근 방식보다 훨씬 안전합니다.


답변

정상적인 시스템에서 chroot를 자체적으로 설정하지 않으면 /dev모든 장치 파일은 아래에 /dev있습니다. 루트 만 장치 파일을 만들 수 있으므로 악의적 인 사용자가 다른 곳에서 장치 파일을 만드는 것에 대해 걱정할 필요가 없습니다.

따라서 원하는 /dev장치와 동일한 장치를 참조 하는 파일을 찾기 만하면됩니다.

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

이 정보 만 표시 될 수 /dev/video0있습니다. 일반적으로 각 장치마다 하나의 장치 파일이 있으며 여기에는 추가 기호 링크가있을 수 있습니다.

따라서 귀하의 질문에 대한 실질적인 답변은 간단한 것입니다. 장치 파일이 열려있는 프로세스를 확인하십시오.

fuser /dev/video0

액세스를 모니터링하려면 (즉, 언제라도 장치 파일을 열 수있는 프로세스 포착) 장치 파일에서 Linux의 파일 액세스 모니터링 방법 중 하나를 사용 하십시오. 감시를 설정하고 장치에 이미있는 프로세스를 확인하십시오. 파일 열기)

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

또는 시스템 로그에 액세스를 기록 할 감사 규칙을 설정합니다 (일반적으로 /var/log/audit/audit.log).

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


답변