2 पॉइंट द्वारा GN⁺ 2023-12-16 | 1 टिप्पणियां | WhatsApp पर शेयर करें

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 टिप्पणियां

 
GN⁺ 2023-12-16
Hacker News राय
  • डिकोड किए गए पैकेट का विश्लेषण

    • पैकेट को डिकोड करने की कोशिश के नतीजे में यह पुष्टि हुई कि एक fixed header है, और 5वां byte on और off को दिखाने वाले 1 और 0 के बीच बदलता है, जबकि बाकी 0 से भरे हुए हैं। इससे अनुमान है कि यह command length, command ("TURN"), argument (0 या 1) को दर्शाता है, और 16 bytes तक pad किया गया है.
  • पावर सप्लाई समस्या

    • WS281x LED strip बहुत तेज़ चमकती है और काफी current खींचती है। 100 strips को maximum brightness पर चलाने के लिए 12V, 3A power supply मुश्किल से ही पर्याप्त है। यह देखते हुए कि firmware maximum brightness 255 में से केवल 31 का उपयोग करता दिखता है, इससे संकेत मिलता है कि fuse उड़ गया होगा.
  • encrypted lighting की reverse engineering की कोशिश

    • Aputure 60d और SmallRig RM75 battery LED lights की reverse engineering करने की कोशिश की, लेकिन पाया कि वे encrypted हैं। दोनों lights एक ही negotiation process इस्तेमाल करती हैं, लेकिन अलग libraries का उपयोग करती हैं। Diffie-Hellman key exchange process की नकल करने की कोशिश की, लेकिन एक अतिरिक्त चरण में दिखने वाले random numbers (कोई और key?) का उद्देश्य समझ नहीं आने पर छोड़ दिया। यह पढ़कर hardcoded key आज़माने का विचार आया.
  • BLE lights पर राय

    • BLE इस्तेमाल करने वाले light sets के बारे में काफी पढ़ चुका हूँ, और लेखक ने इसका ज़िक्र किया, उसके लिए आभारी हूँ। इससे analog technology connection वाला वीडियो याद आ गया.
  • BLE-connected Christmas lights को automate करने की कोशिश

    • BLE-connected Christmas lights को automate करने की कोशिश की, लेकिन उससे electronic waste बन गया। अब आप भी बना सकते हैं.
  • message encryption पर सवाल

    • यह सवाल उठाया गया कि messages encrypted क्यों हैं, और क्या यह standard है.
  • encryption पर टिप्पणी

    • "आप हवा के रास्ते plaintext नहीं भेज सकते, यह सुरक्षित नहीं है" और "चिंता मत करो, मैंने AES encryption जोड़ दिया है" जैसी टिप्पणी.
  • lights hacking पर मज़ाकिया टिप्पणी

    • "मुझे बताओ कि मैं अपनी lights को कैसे hack कर सकता हूँ" पर प्रतिक्रिया: "हाहा! बहुत पसंद आया".
  • Govee lights reverse engineering पर beginner सवाल

    • एक beginner ने पूछा कि Govee lights जैसी WiFi lights की reverse engineering क्यों नहीं की जा सकती, और क्या MITM (man-in-the-middle attack) ज़्यादा मुश्किल होता है.