
ThinkPad X230 पर वेबकैम एलईडी नियंत्रित करने के लिए उपकरण
इस रिपॉज़िटरी में ऐसे उपकरण हैं जो ThinkPad X230 के वेबकैम LED पर लैपटॉप तक भौतिक पहुँच के बिना सॉफ़्टवेयर नियंत्रण प्राप्त करने की अनुमति देते हैं। इन्हें एक व्यावहारिक प्रदर्शन के रूप में बनाया गया था कि मैलवेयर LED संकेत के बिना वेबकैम के माध्यम से वीडियो रिकॉर्ड कर सकता है।
यह USB के माध्यम से वेबकैम फ़र्मवेयर को रीफ़्लैश करके काम करता है (X230 वेबकैम आंतरिक रूप से USB के माध्यम से जुड़ा होता है) ताकि LED को मनमाने ढंग से नियंत्रित करने की क्षमता जोड़ी जा सके। यह दृष्टिकोण संभवतः कई अन्य लैपटॉपों को प्रभावित करता है, क्योंकि वेबकैम को USB के माध्यम से जोड़ना और उसके फ़र्मवेयर को रीफ़्लैश करने की अनुमति देना लैपटॉप निर्माताओं के बीच एक सामान्य डिज़ाइन पैटर्न है।
विवरण के लिए मेरा दिया गया "Lights Out: ThinkPad वेबकैम LED संकेतक को गुप्त रूप से बंद करना" टॉक (pdf) देखें, जो मैंने POC 2024 में दिया था: X230 वेबकैम फ़र्मवेयर को रीफ़्लैश करने का तरीका खोजना, फ़र्मवेयर का रिवर्स इंजीनियरिंग करना, LED नियंत्रण के लिए एक इम्प्लांट जोड़ना, और अन्य लैपटॉपों पर इस दृष्टिकोण की प्रयोज्यता के बारे में नोट्स।
नोट: वेबकैम फ़र्मवेयर को रीफ़्लैश करने से वेबकैम अनुपयोगी (brick) हो सकता है, इन उपकरणों का उपयोग सावधानी से करें।
ThinkPad X230 (और उसी युग के कुछ अन्य लैपटॉप) पर उपयोग किया जाने वाला वेबकैम Ricoh R5U8710 USB कैमरा नियंत्रक पर आधारित है। यह नियंत्रक अपने फ़र्मवेयर का एक भाग, SROM भाग, वेबकैम बोर्ड पर स्थित SPI फ्लैश चिप पर संग्रहीत करता है। नियंत्रक USB के माध्यम से SPI चिप की सामग्री को रीफ़्लैश करने की भी अनुमति देता है।
X230 वेबकैम बोर्ड पर LED, R5U8710 नियंत्रक के GPIO B1 पिन से जुड़ी है।
GPIO B पोर्ट, R5U8710 के अंदर 8051-आधारित CPU के XDATA मेमोरी स्पेस में पते 0x80 पर मैप किया गया है।
इस प्रकार, उस पते पर मान बदलने से LED की स्थिति बदल जाती है।
यह इस बात पर निर्भर नहीं करता कि वेबकैम उस समय वीडियो स्ट्रीम कर रहा है या नहीं।
इस रिपॉज़िटरी में दिए गए उपकरण, USB-नियंत्रित तथाकथित "यूनिवर्सल इम्प्लांट" के साथ कस्टम फ़र्मवेयर को वेबकैम बोर्ड पर SPI चिप में फ़्लैश करने की अनुमति देते हैं।
यह इम्प्लांट मनमाने पतों (XDATA मेमोरी स्पेस के भीतर) पर नियंत्रित डेटा लिखने और मनमाने पतों (CODE मेमोरी स्पेस के भीतर; ऑफ़सेट 0xb000 से XDATA के साथ alias किए गए) को कॉल करने की अनुमति देता है।
यूनिवर्सल इम्प्लांट का उपयोग इसके लिए किया जा सकता है:
कैमरा नियंत्रक मेमोरी के भीतर एक दूसरे चरण वाला इम्प्लांट गतिशील रूप से अपलोड करना और उसे निष्पादित करना (मूल रूप से रिवर्स इंजीनियरिंग उद्देश्यों के लिए);
वेबकैम LED को सीधे नियंत्रित करना।
अधिक विवरण के लिए टॉक स्लाइड देखें।
srom.py — Ricoh R5U8710-आधारित वेबकैम के फ़र्मवेयर के SROM भाग को USB के माध्यम से पढ़ता और लिखता है।
नोट: वेबकैम केवल अपने बूट के दौरान SROM फ़र्मवेयर लोड करता है। इस प्रकार, अपडेट किए गए फ़र्मवेयर को लोड करने के लिए आपको लैपटॉप को पावर साइकल करना होगा (पूर्ण शटडाउन, केवल रिबूट नहीं);
patch_srom.py — FRU 63Y0248 वेबकैम (मूल X230 वेबकैम से नहीं) से SROM छवि में यूनिवर्सल इम्प्लांट जोड़ने के लिए उसे पैच करता है।
नोट: मूल X230 वेबकैम SROM छवि के साथ काम करने के लिए इस उपकरण में संशोधन आवश्यक है।
हालाँकि, FRU 63Y0248 SROM छवि (वैकल्पिक रूप से, इम्प्लांट जोड़कर) को मूल X230 वेबकैम पर भी फ़्लैश किया जा सकता है;
fetch.py — दूसरे चरण वाले इम्प्लांट के माध्यम से USB के ऊपर IRAM, XDATA, या CODE मेमोरी स्पेस की सामग्री प्राप्त करता है, जिसे यूनिवर्सल इम्प्लांट के माध्यम से गतिशील रूप से अपलोड किया जाता है;
led.py — यूनिवर्सल इम्प्लांट के माध्यम से XDATA में पते 0x80 पर मान ओवरराइट करके वेबकैम LED को चालू या बंद करता है।
srom/x230.bin — मूल X230 वेबकैम मॉड्यूल की SROM सामग्री (FRU अज्ञात; बोर्ड पर 19N1L1NVRA0H अंकन);
srom/63Y0248.bin — FRU 63Y0248 वेबकैम मॉड्यूल की SROM सामग्री;
code/63Y0248.bin — FRU 63Y0248 वेबकैम मॉड्यूल से लीक हुए CODE मेमोरी स्पेस की सामग्री।
नोट: बूट ROM ऑफ़सेट 0xb000 के नीचे है, और यह मूल X230 वेबकैम मॉड्यूल के बूट ROM के समान है।