- घर के अंदर कुत्ते पर नज़र रखने के लिए 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 के जरिए,
adminaccount का 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.pyscript के माध्यम से- 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 करना
- Wi‑Fi सूची देखना (
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 सिस्टम की वास्तविकता का अप्रत्यक्ष अनुभव हुआ
- परियोजना का अंतिम लक्ष्य, यानी कुत्ते पर नज़र रखना, सफल रहा; और कुत्ता ज़्यादातर सोफ़े या बिस्तर पर सोता हुआ ही दिखा
2 टिप्पणियां
CVE-2022-37255 को 7.5 अंक मिले हैं।
Hacker News राय
मेरा Frida script इस्तेमाल होते देखना काफ़ी दिलचस्प लगा, वह script यहाँ देखी जा सकती है, यह जानकर खुशी हुई कि script real-world environment में अच्छी तरह काम कर रही है, अगर आपने इसमें कुछ जोड़ा या बदला हो तो उसके बारे में सुनना चाहूँगा
जानकारी के लिए, frigate में two-way audio इस्तेमाल करने के लिए सामान्य
rtsp://की जगह main stream परtapo://go2rtc configuration लगानी पड़ती है, TP-Link two-way audio सिर्फ अपने proprietary API में देता है, इससे ONVIF (open source tools के ज़रिए camera pan/tilt control) काम नहीं करता, इसलिए दोनों features साथ में इस्तेमाल करने के लिए एक काफ़ी आक्रामक workflow चाहिए:tapo://stream reading रोकें → onvif client चलाएँ/ pan·tilt adjust करें → onvif बंद करें →tapo://फिर से शुरू करेंमुझे लगता है कि IoT security कुल मिलाकर बुरी हालत में है, खासकर यह बात चिंताजनक है कि consumer routers ऐसे unauditable black boxes हैं जो पूरा network traffic संभालते हैं, ज़्यादातर लोगों को यह भी नहीं पता होता कि उनके router firmware को वर्षों से update नहीं मिला है और उसमें पहले से ज्ञात vulnerabilities मौजूद हैं, networking hardware का supply-chain trust model पूरी तरह टूटा हुआ लगता है
यह blog post बेहद अच्छी तरह लिखी गई लगी, आजकल इस तरह की बहुत-सी लिखाइयाँ LLM-generated होती हैं और पढ़ने में अटपटी लगती हैं, लेकिन इस लेख ने technical depth और सहज पढ़ने के बीच शानदार संतुलन बनाया है, (मुझे पता है cover image AI-generated है, लेकिन वह लेख के मूल बिंदु से असंबंधित है)
मुझे यह जानने की जिज्ञासा है कि Frida, mitmproxy जैसे tools को Android apps पर आगे भी इस्तेमाल किया जा सकेगा या नहीं, अगले साल signing requirements लागू होने के बाद क्या होगा, यह जानना चाहता हूँ
जानकारी के लिए, संबंधित उदाहरणों में The Tapo C200 research project और PyTapo: Tapo cameras के लिए Python library शामिल हैं
एक और संबंधित सामग्री के रूप में, (TP-Link firmware decryption और C210 V2 cloud camera bootloader analysis) यहाँ है
शायद OP के कुत्ते के बिस्तर से फ़र्श पर जाने की वजह radiator का चालू होना हो सकती है, लगता है कुछ अतिरिक्त sensor data की ज़रूरत होगी
लगता है अब हम उस दौर में पहुँच गए हैं जहाँ hardcoded admin password मिलना कोई बड़ी बात नहीं रही
मैं tapo cameras में कौन-कौन से models
rtsp://support करते हैं, इसका कोई संकलित reference ढूँढना चाहता हूँ, c210 ठीक-ठाक चल रहा है (हालाँकि cloud capture नहीं होता) और मैं इसे frigate के साथ इस्तेमाल कर रहा हूँ, आज मैंने c402 (outdoor model) खरीदा, लेकिन इसमें advanced settings में camera account नहीं है, यह निराशाजनक है, कीमत काफ़ी आकर्षक है लेकिन features में consistency की कमी लगती है, अगर किसी को कोई अच्छा outdoor camera पता हो जो सस्ता हो,rtspstream support करता हो और solar panel भी लगाया जा सके, तो recommendation चाहूँगाrtsp://support न भी हो, तब भीtapo://go2rtc stream source इस्तेमाल करना संभव हो सकता है, मैंने अपनी frigate configuration संदर्भ के लिए यहाँ छोड़ी है