कैसे पता करें कि मेरा वेबकैम उपयोग किया गया है या नहीं?


14

कौन सी कमांड मुझे यह जानने की अनुमति देती है कि मेरा वेबकैम उपयोग किया गया है या नहीं?

lsof /dev/video0काफी नहीं है। प्रमुख और मामूली संख्या 81 और 0 वाले सभी ब्लॉक उपकरणों की निगरानी की जानी चाहिए।


2
+1। TIL lsof(और fuser) डिफ़ॉल्ट रूप से वह नहीं करता है जो आपको इसकी आवश्यकता है।
सेलदा

@ सालदा आपको समझा सकती है?
यंगफ्रॉग

आपकी चिंताएँ क्या हैं? क्या यह वीडियो आपको देख रहा है, या आप ऑडियो के बारे में भी चिंतित हैं (लेंस को कवर करने की स्थिति में आपकी समस्या का समाधान नहीं होगा)? या यह डिबगिंग या यहां तक ​​कि जिज्ञासा के बारे में है? #
क्रिस एच

@YoungFrog मैं सिर्फ इस सवाल पर ओपी की तारीफ कर रहा था क्योंकि इससे मुझे कुछ सीखने को मिला। मैंने शुरू में यह मान लिया था कि lsof /dev/video0कर्नेल vfs ऑब्जेक्ट से जुड़ी एक खुली फ़ाइल डिस्क्रिप्टर को रखने वाली सभी प्रक्रियाएँ चाहेगी /dev/video0, जो इसे खोलने के लिए फाइल सिस्टम पथ का उपयोग करने के लिए इस्तेमाल की गई हो, लेकिन ओपी का प्रश्न यह स्पष्ट करता है कि यह सच नहीं है।
सेलदा

जवाबों:


15

यदि आपका कर्नेल मॉड्यूल का उपयोग करता है (जो कि अत्यधिक संभावना है), यह निर्धारित करने का एक तरीका है कि क्या कोई प्रोग्राम आपके वेबकैम तक पहुंच रहा है, तो मॉड्यूल के उपयोग की संख्या को देखें:

$ lsmod | grep uvcvideo
uvcvideo               90112  0

तीसरे क्षेत्र में 0 से पता चलता है कि किसी भी उपकरण के पास uvcvideo(-कंट्रोल किए lsmodगए) वेबकैम के लिए कोई भी उपकरण खुला नहीं है । बेशक आपको यह जानना होगा कि आपके वेबकैम के लिए कौन सा मॉड्यूल जिम्मेदार है; हालांकि, यह जांचना आसान है, जबकि आप पनीर जैसे प्रोग्राम को चलाते समय आउटपुट में बदलाव देखेंगे।

ध्यान दें कि, कड़ाई से बोलते हुए, एक सकारात्मक गिनती का मतलब केवल यह है कि कुछ ने एक उपकरण खोला है, इसका मतलब यह नहीं है कि छवियां कैप्चर की जा रही हैं।


क्या एक सकारात्मक गिनती का मतलब केवल यह भी नहीं है कि किसी चीज़ में ऐसा उपकरण अभी खुला है , जैसा कि एक छवि को पकड़ने और फिर उसे बंद करने के लिए इसे दूसरे के एक अंश के लिए खोलना हो सकता है? इस तरह के एक उपयोग पैटर्न के साथ, आपको इसे अधिनियम में पकड़ने के लिए अविश्वसनीय रूप से भाग्यशाली होना चाहिए।
एक CVn

@ माइकलकॉर्जलिंग ने इसीलिए मैंने "जब lsmodभागा" का उल्लेख किया । यह आपके द्वारा दिए गए परिदृश्य को देखते हुए विस्तार के लायक है (हालांकि मेरे अनुभव में, कैमरों की विलंबताएं काफी अधिक हैं जो डिवाइस को खोलना, एक छवि को कैप्चर करना और डिवाइस को बंद करना काफी समय लेता है)। डिवाइस के उपयोग को देखते हुए fuserया lsofउसी मुद्दे से पीड़ित होते हुए भी; अधिक मजबूत दृष्टिकोण को ट्रेसपॉइंट या कुछ इसी तरह का उपयोग करके वी 4 एल एपीआई को हुक करने की आवश्यकता होगी।
स्टीफन किट

@ माइकलकॉर्जलिंग वास्तव में। इस उपयोग पैटर्न को पकड़ने के लिए, आपको डिवाइस फ़ाइल (एक्सेस) तक पहुंच की निगरानी करनी होगी, न कि केवल एक समय पर जांचना।
गिलेस एसओ- बुराई को रोकना '

7

यह मानते हुए कि आप वास्तव में क्या चाहते हैं, यह सुनिश्चित करना है कि जब आप इसे नहीं चाहते हैं तो आपके वेबकैम का उपयोग नहीं किया जा रहा है , सबसे सरल उपाय यह है कि जब जरूरत न हो तो बस इसे डिस्कनेक्ट करें (यदि बाहरी हो)। या वेबकैम को कवर करना (बस डक्ट टेप का एक टुकड़ा काम करेगा)।

सॉफ्टवेयर की तुलना में शारीरिक रूप से आधारित दृष्टिकोण बहुत अधिक सुरक्षित हैं।


1
टेप माइक्रोफोन को ब्लॉक नहीं करता है, जो (यहां तक ​​कि एक बिलियन वेबकैम पर भी) एक ध्वनि मॉड्यूल के बजाय कैमरे के हिस्से के रूप में संरचित हो सकता है।
क्रिस एच

मैं डक्ट टेप के खिलाफ दृढ़ता से सलाह दूंगा क्योंकि यह आसानी से एक अवशेष छोड़ सकता है। मैंने सर्जिकल टेप (दवा की दुकानों से उपलब्ध) का उपयोग किया है क्योंकि यह हटाए जाने पर बहुत कम अवशेष छोड़ता है, जिसमें लेंस को कवर करने वाला एक छोटा स्टिकर, चिपचिपा पक्ष होता है। इस तरह लेंस पर गोंद अवशेषों का कोई खतरा नहीं है। यह, वास्तव में, एक समाधान है जो स्थायी पक्ष पर थोड़ा है; आप हर समय टेप से वापस नहीं लेना चाहते हैं।
एक CVn

@ क्रिस है कि कोई मतलब नहीं है (विडंबना है, अपने शीर्ष एसई अंग्रेजी है ...) क्या मतलब है तुम्हारा?
theonlygusti

@Theonlygusti का मतलब था कि हार्डवेयर के एक टुकड़े के रूप में मॉड्यूल; बेशक इस थ्रेड पर इसे अर्थ सॉफ्टवेयर के रूप में पढ़ना अधिक तर्कसंगत होगा, जो बहुत अधिक समझ में नहीं आएगा। टेप माइक्रोफोन को ब्लॉक नहीं करता है। एक माइक्रोफोन वेबकैम कार्ड का हिस्सा हो सकता है, इसके बजाय या साउंड कार्ड के माध्यम से जुड़ी किसी भी चीज के अलावा (एक शब्द जो मैं SoC हार्डवेयर की वजह से बच रहा था)। तो यह निर्धारित करने के लिए कि क्या वेबकैम सक्षम / सक्रिय / जासूसी कर रहा है, आपको केवल लेंस से अधिक की चिंता हो सकती है। लेकिन मेरे पास जो एकमात्र लिनक्स सिस्टम है वह क्रोमबुक (क्राउटन) है, इसलिए यह थोड़ा सीमित है।
क्रिस एच

1
ज़रूर, लेकिन यह सवाल नहीं था
गिल्स एसओ- बुराई को रोकना '

7

किसी भी प्रणाली पर, जब तक कि आपने अपने स्वयं के साथ chroots सेट नहीं किया है /dev, सभी डिवाइस फ़ाइलें नीचे हैं /dev। केवल रूट ही डिवाइस फाइलें बना सकता है, इसलिए आपको दुर्भावनापूर्ण उपयोगकर्ताओं को डिवाइस फाइल बनाने की चिंता करने की आवश्यकता नहीं है।

तो आपको बस इतना करना होगा /devकि जिस डिवाइस में आप रुचि रखते हैं, उसी डिवाइस को देखें।

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

संभावना है कि यह केवल दिखाएगा /dev/video0। आमतौर पर, प्रत्येक डिवाइस के लिए एक एकल डिवाइस फ़ाइल होती है, और संभवतः इसके लिए अतिरिक्त प्रतीकात्मक लिंक भी होते हैं।

इस प्रकार आपके प्रश्न का व्यावहारिक उत्तर सरल है। बस जाँचें कि उपकरण फ़ाइल किस प्रक्रिया में खुली है।

fuser /dev/video0

यदि आप एक्सेस की निगरानी करना चाहते हैं (यानी किसी भी समय डिवाइस फ़ाइल को खोल सकते हैं) प्रक्रियाओं को पकड़ें, तो डिवाइस फ़ाइल पर लिनक्स की फ़ाइल एक्सेस मॉनिटरिंग विधियों में से एक का उपयोग करें : एक घड़ी सेट करें (और जांचें कि क्या प्रक्रिया पहले से ही डिवाइस में है फ़ाइल खोलें

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

अच्छी बात! लेकिन, यह अभी भी एंजेल के बिंदु-में-समय की समस्या से ग्रस्त है! 'समाधान (cf. टिप्पणी वहाँ)। सबसे मज़बूत सॉफ़्टवेयर समाधान संभवतः उस डिवाइस को ब्लैकलिस्ट करने के लिए है, udevताकि उसे बूट अप में डिवाइस फ़ाइल न मिले; और फिर एक डिवाइस फ़ाइल जोड़ें और अगर आप कैमरे का उपयोग करने की योजना बनाते हैं ... या शारीरिक रूप से इसे अनप्लग करें।
jpaugh

@jpaugh इस सवाल का वेब कैमरा उपयोग कर रहा था, वेब कैमरा को अक्षम नहीं कर रहा था।
गिल्स एसओ- बुराई को रोकना '

इसे कर्नेल स्तर पर मॉनिटर किया जाना चाहिए। एक उपकरण को कहीं भी जोड़ा जा सकता है: जैसेmknod /root/video0 b 81 0
user123456

@ j658063.mvrht.com लेकिन केवल रूट ही ऐसा कर सकता है। अगर जड़ बेवकूफ चीजें नहीं करता है तो आप सुरक्षित हैं। यदि रूट बेवकूफ चीजें करता है, तो आप वैसे भी खराब हो सकते हैं - रूट कुछ प्रक्रियाओं को छिपाने के लिए कर्नेल को भी बदल सकता है।
गिलेस एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.