- घर के अंदर कुत्ते पर नज़र रखने के लिए Tapo कैमरा खरीदा, लेकिन अनपेक्षित रूप से TP-Link डिवाइस और ऐप कैसे काम करते हैं इसका रिवर्स-इंजीनियरिंग जैसा विश्लेषण करने लगा
- onboarding प्रक्रिया और encrypted API communication की संरचना का विश्लेषण करने के लिए MITM, APK decompile, और decryption script बनाना जैसी कई तकनीकों का उपयोग किया
- शुरुआती admin password की खोज और session key derivation प्रक्रिया के जरिए encrypted messages को decrypt किया, और डिवाइस व cloud account के बीच अविश्वसनीय synchronization समस्या को पहचाना
- पूरे onboarding flow का विश्लेषण करके मुख्य API call प्रक्रिया, account creation, password change, और Wi‑Fi connection जैसी चीज़ों को Bash script से automate किया
- Tapo firmware security design की कमियाँ, कम परिष्कृत encryption implementation, और अनियमित account synchronization जैसी बातें दिखाती हैं कि सस्ते IoT डिवाइसों में कैसी समस्याएँ होती हैं
परियोजना का अवलोकन
- लेखक ने घर के अंदर कुत्ते पर नज़र रखने के लिए कम कीमत वाला Tapo कैमरा खरीदा और इस्तेमाल किया
- इस्तेमाल के दौरान setup की असुविधा और ऑनलाइन जानकारी की कमी के कारण, उत्पाद के काम करने के तरीके को गहराई से समझने की प्रेरणा मिली
- frigate integration और 2way audio enable करने में अप्रत्याशित समस्याएँ आईं, जिससे cloud integration के बिना direct onboarding तरीके में रुचि बनी
Onboarding और authentication संरचना का विश्लेषण
- Tapo कैमरा की connection प्रक्रिया का विश्लेषण करने के लिए MITM proxy और frida dynamic hooking tool का उपयोग करके ऐप और कैमरा के बीच का traffic intercept किया गया
- नई ऐप्स अक्सर proxy ignore करना, certificate pinning जैसी bypass-रोधी सुविधाएँ रखती हैं, इसलिए dynamic tools वाला तरीका प्रभावी रहा
- इस bypass सेटअप के बाद, कैमरा onboarding flow में default administrator account login प्रक्रिया को ठीक-ठीक पहचाना गया
- यह भी पता चला कि default login API, cloud account password से अलग, डिवाइस-विशिष्ट default password के साथ काम करता है
Encryption संरचना और default password की खोज
- APK decompile (JADX का उपयोग) और code analysis के जरिए,
admin account का default password (TPL075526460603) हासिल किया गया
- cloud password बदलने पर भी पहले से linked कैमरा डिवाइस उस बदलाव को नहीं पहचानते, इससे ऐप और कैमरा के बीच password synchronization की अशुद्धि की पुष्टि हुई
- default password पता चलने के बाद, session key (
lsk, ivb) derivation logic लागू करके encrypted API messages को real time में decrypt करना संभव हुआ
mitmproxy scripting और API विश्लेषण
- PyTapo open source project को संदर्भ बनाकर, वास्तविक Tapo onboarding प्रक्रिया के API flow का बारीकी से विश्लेषण किया गया
tapo_decrypt_pretty.py script के माध्यम से
- login handshake का पता लगाना
- session key निकालना
- encrypted API को decrypt करके अधिक पठनीय output देना, और JSON में सहेजना
- पूरे onboarding API call रिकॉर्ड में से केवल महत्वपूर्ण चरण चुनकर एक automated workflow बनाया गया
- Wi‑Fi सूची देखना (
scanApList)
- RTSP/ONVIF account enable करना
- administrator password बदलना
- Wi‑Fi connection करना
Automation और परिणाम
- Bash script (
tapo_onboard.sh) के जरिए ऊपर की पूरी onboarding प्रक्रिया को स्वचालित रूप से चलने लायक बनाया गया
- default admin login
- Wi‑Fi चुनना और connect करना
- कैमरा feed से logo हटाना
- RTSP/ONVIF उपयोग की अनुमति देना
- administrator password reset करना
- कैमरा firmware संरचना में निम्नलिखित विशेषताएँ और कमियाँ मिलीं
- कुछ APIs SHA-256 hash का उपयोग करती हैं, लेकिन कुछ अब भी MD5 जैसे पुराने cryptographic तरीकों पर टिके हैं
- public key 2 मौजूद हैं, लेकिन किस स्थिति में कौन-सी key उपयोग करनी है यह स्पष्ट नहीं है
- ऐप और डिवाइस के बीच password synchronization बहुत अस्थिर है
निष्कर्ष और अनुभव
- Tapo कैमरा firmware और API security संरचना तात्कालिक जुगाड़ और कम परिष्कृत design जैसी लगती है
- इस परियोजना के जरिए कम कीमत वाले IoT डिवाइसों की security कमजोरियों और अपूर्ण onboarding सिस्टम की वास्तविकता का अप्रत्यक्ष अनुभव हुआ
- परियोजना का अंतिम लक्ष्य, यानी कुत्ते पर नज़र रखना, सफल रहा; और कुत्ता ज़्यादातर सोफ़े या बिस्तर पर सोता हुआ ही दिखा
अभी कोई टिप्पणी नहीं है.