Bluetooth LE LED लाइटिंग कंट्रोलर का रिवर्स इंजीनियरिंग, या मैंने अपनी क्रिसमस लाइट्स कैसे खराब कर दीं
- Bluetooth LE के ज़रिए संचार करने वाला और ऐप वाला कोई भी डिवाइस घर के automation सिस्टम में इंटीग्रेट किए जाने लायक है.
- बजट-फ्रेंडली LED light strip का रिवर्स इंजीनियरिंग करके उसे automate करने में काफ़ी समय लगाया गया.
- हाल ही में सबसे सस्ती £2.38 वाली Bluetooth LE-नियंत्रित 5M non-addressable strip को कुछ ही घंटों में Home Assistant से जोड़ने में सफलता मिली.
चरण 1. तारों के ज़रिए बाइट्स
- अपने खुद के software से डिवाइस को नियंत्रित करने के लिए, ऐप से डिवाइस तक भेजे जाने वाले Bluetooth bytes की जाँच करना पहला कदम है.
- Android इस प्रक्रिया को आसान बनाता है. Developer mode चालू करें, लाइटिंग ऐप इंस्टॉल करें, फिर developer settings में
Bluetooth HCI snoop सक्षम करके logs रिकॉर्ड करें.
- Wireshark में logs खोलकर सटीक bytes देखे जा सकते हैं, values के patterns खोजे जा सकते हैं, और हर action के लिए bytes की series पहचानी जा सकती है.
चरण 2. replay attack
- अगर लक्ष्य सिर्फ लाइट्स को on और off करना है, तो देखी गई दोहराई जाने वाली byte series power control के लिए काफ़ी हो सकती है.
gatttool का इस्तेमाल करके BLE डिवाइस से कनेक्ट होकर bytes भेजे जा सकते हैं और टेस्ट किया जा सकता है.
चरण 3. Android ऐप decompile करना
- ऐप का APK डाउनलोड करके उसे jadx में खोला गया ताकि अंदर के राज़ देखे जा सकें.
- source में AES का संदर्भ मिला, जिससे encrypted protocol होने की संभावना का संकेत मिला.
- encrypted data हर बार बदलता नहीं है, low-power MCU पर तेज़ decryption की ज़रूरत होती है, और संभव है कि हर डिवाइस के लिए unique न होकर एक fixed key हो.
चरण 4. सभी फ़ंक्शन
- ऐप के हर फ़ंक्शन को चलाकर भेजे गए bytes रिकॉर्ड किए गए.
- इससे हर action को रिकॉर्ड करने, दोहराने, patterns खोजने, और capture किए गए bytes को notes के साथ correlate करने में मदद मिलती है.
चरण 5. स्वचालित electronic waste generator
- रंग बदलने की जाँच के दौरान यह देखा गया कि ऐप लाल, हरे और नीले के लिए 0x1F से ऊपर की values नहीं भेजता.
- 8-bit values आज़माईं गईं और पता चला कि ज़्यादा चमकीले रंग ठीक से काम करते हैं.
- यह जिज्ञासा हुई कि क्या कोई अतिरिक्त effect है, इसलिए एक साधारण loop से कोशिश की गई.
- 10वें effect तक सब ठीक चला, लेकिन 11वें पर एक secret mode मिला, और 12वें पर अंधेरा छा गया.
- reboot की कोशिश की गई, लेकिन लाइट्स फिर चालू नहीं हुईं, और Bluetooth advertising भी बंद हो गई, इसलिए अब कनेक्ट करना संभव नहीं रहा.
- अनुमान है कि buffer overflow की वजह से firmware खराब हो गया.
- लेकिन LED खुद standard addressable LED हैं, इसलिए उन्हें किसी दूसरे microcontroller से जोड़कर इस्तेमाल किया जा सकता है.
मैं अपनी लाइट्स को कैसे खराब कर सकता हूँ
- समस्या आने के बावजूद प्रोटोकॉल का अधिकांश हिस्सा document किया गया और Home Assistant custom component सहित एक Github project बनाया गया.
- यह काम करता है, लेकिन आगे बढ़ने के लिए जोखिम खुद उठाना होगा.
GN⁺ की राय
- इस लेख की सबसे महत्वपूर्ण बात वह DIY भावना और रिवर्स इंजीनियरिंग के प्रति जुनून है, जिसके ज़रिए कोई व्यक्ति घर में इस्तेमाल होने वाली smart lights को automation सिस्टम में इंटीग्रेट करना चाहता है.
- रिवर्स इंजीनियरिंग की प्रक्रिया में सिर्फ तकनीकी ज्ञान ही नहीं, बल्कि problem-solving क्षमता और रचनात्मकता भी चाहिए होती है, और यही इसे शुरुआती software engineers के लिए भी बेहद दिलचस्प विषय बनाती है.
- असफलता का अनुभव साझा करना दूसरों को वही गलती दोहराने से बचाने में मदद करता है, और ऐसा खुला ज्ञान-साझाकरण open source community के मूल मूल्यों में से एक है.
1 टिप्पणियां
Hacker News राय
डिकोड किए गए पैकेट का विश्लेषण
पावर सप्लाई समस्या
encrypted lighting की reverse engineering की कोशिश
BLE lights पर राय
BLE-connected Christmas lights को automate करने की कोशिश
message encryption पर सवाल
encryption पर टिप्पणी
lights hacking पर मज़ाकिया टिप्पणी
Govee lights reverse engineering पर beginner सवाल