विषयसूची:

एलेक्सा, मेरी चाबियां कहां हैं ?: 4 कदम
एलेक्सा, मेरी चाबियां कहां हैं ?: 4 कदम

वीडियो: एलेक्सा, मेरी चाबियां कहां हैं ?: 4 कदम

वीडियो: एलेक्सा, मेरी चाबियां कहां हैं ?: 4 कदम
वीडियो: Panja Attack #6 | Little Singham Cartoon | Mon-Fri | 11.30 AM & 6.15 PM only on Discovery Kids India 2024, जुलाई
Anonim
Image
Image
ब्लूटूथ बीकन हैकिंग
ब्लूटूथ बीकन हैकिंग

एलेक्सा विशेष रूप से सूचना पुनर्प्राप्ति कार्यों और वायरलेस होम नेटवर्क का उपयोग करके संपत्ति की निगरानी के लिए उपयुक्त है। तेजी से पुनर्प्राप्ति के लिए क़ीमती सामान को ग्रिड पर रखने पर विचार करना स्वाभाविक है। हम नेटवर्क रेंज और बैटरी लंबी उम्र के लिए सस्ते ब्लूटूथ कम ऊर्जा बीकन हैक करते हैं और एक स्मार्ट एप्लिकेशन बनाते हैं ताकि एलेक्सा को पता चले कि हमने चाबियां कहां छोड़ी हैं।

यह कैसे करना है…

चरण 1: ब्लूटूथ बीकन को हैक करना

3 बीकन का एक सेट $15 से कम में खरीदा जा सकता है और Android/iOS अनुप्रयोगों के साथ समर्थित है, लेकिन हम गोपनीयता के लिए ऑप्ट आउट करेंगे। इसके अलावा, हमारी चाबियां ढूंढना हमारे फोन को खोजने में नहीं बदलना चाहिए।

रिवर्स इंजीनियरिंग स्मार्ट लाइट्स पर इस एडफ्रूट ट्यूटोरियल ने हमें बीकन को नियंत्रित करने में मदद की। डिवाइस के पते के लिए बीकन स्कैन चालू करके प्रारंभ करें:

sudo hcitool lescan

'iTag' नाम से लेबल किए गए पते को ढूंढें और कॉपी करें, फिर चलाएँ:

सुडो गट्टूल -I

चलाकर अंतःक्रियात्मक रूप से डिवाइस से कनेक्ट करें:

कनेक्ट एए: बीबी: सीसी: डीडी: ईई: एफएफ

विकल्प देखने के लिए 'सहायता' या सेवाओं को देखने के लिए 'प्राथमिक' चलाने का प्रयास करें:

ऊपर दिए गए सर्विस हैंडल के बाद 'char-desc' चलाने पर, हमें UUIDs मिलते हैं जिन्हें हम gatt विशेषता विनिर्देशों और सेवा विनिर्देशों के संदर्भ में देखते हैं। इन सेवाओं के बारे में अधिक जानकारी के लिए, इसे देखें। Wireshark के साथ ट्रैफ़िक का निरीक्षण करते हुए, हम पाते हैं कि 0100111000000001 अलार्म को ट्रिगर करता है और तार्किक रूप से, 0000111000000001 इसे बंद कर देता है। अब हमारे पास सरल पायथन फ़ंक्शन है:

आयात pexpectdef sound_alarm(BD_ADDR): चाइल्ड = pexpect.spawn('gatttool -I') child.sendline('connect {}'.format(BD_ADDR)) child.expect('Connection Successful', timeout=30) child.sendline ('चार-लेखन-cmd 0x000b 0100111000000001')

इसके बाद, जब हम चाबियों की तलाश में होते हैं, तो हम बीकन को ट्रिगर करने के लिए एलेक्सा कौशल बनाने पर ध्यान केंद्रित करते हैं।

चरण 2: एलेक्सा स्किल और ऐप बनाना

एलेक्सा स्किल और ऐप बनाना
एलेक्सा स्किल और ऐप बनाना
एलेक्सा स्किल और ऐप बनाना
एलेक्सा स्किल और ऐप बनाना

हम एक ऐसा कौशल बनाते हैं जो एक स्थानीय सर्वर से जुड़ा होगा। फिर हम अपने सर्वर को कोई भी कार्रवाई करने के लिए कॉन्फ़िगर करते हैं, इस मामले में, एक अनुमान प्रदान करते हैं कि कुंजियाँ कहाँ स्थित हो सकती हैं और ब्लूटूथ बीकन बीप करें। फ्लास्क एक एप्लिकेशन की सेवा के लिए एक सरल और उपयोग में आसान पायथन लाइब्रेरी प्रदान करता है। फ्लास्क-आस्क का उपयोग करके, हम अपने एलेक्सा कौशल के साथ संचार करने के लिए सर्वर को कॉन्फ़िगर कर सकते हैं जिसे हम बाद में बनाएंगे। अच्छी तरह से Ngrok के साथ एप्लिकेशन की सेवा करें, जो हमें एक https लिंक देगा जिसकी हमें अपने एलेक्सा कौशल की आवश्यकता होगी। सबसे पहले हमने सबसे सरल कार्यक्षमता के साथ एप्लिकेशन बनाया: ट्रिगर होने पर हमारे बीएलई बीकन बीप बनाने के लिए।

#!/usr/bin/env pythonfrom फ्लास्क आयात फ्लास्क से फ्लास्क_ask आयात पूछें, स्टेटमेंट इंपोर्ट pexpect ऐप = फ्लास्क (_name_) पूछें = पूछें (ऐप, '/') BD_ADDR = 'AA:BB:CC:DD:EE:FF ' #आपकी ब्लूटूथ बीकन आईडी यहां @ask.intent('findkeys') def retrievr(): sound_alarm() स्पीच_टेक्स्ट = "आपकी चाबियां इधर-उधर कहीं हैं।" वापसी विवरण (speech_text) def sound_alarm (): बच्चा = pexpect.spawn ('gatttool -I') child.sendline ('कनेक्ट {}'। प्रारूप (BD_ADDR)) child.expect ('कनेक्शन सफल', टाइमआउट = 60) Child.sendline('char-write-cmd 0x000b 0100111000000001') अगर _name_ == "_main_": app.run(host='127.0.0.1', port='5000')

हमने बीएलई बीप बनाने के लिए पहले लिखे गए फंक्शन साउंड_अलार्म () का इस्तेमाल किया था। उस फ़ंक्शन के लिए जिसका उपयोग इरादे के लिए किया जाएगा, हम आस्क डेकोरेटर को अपने इरादे "फाइंडकी" के साथ जोड़ते हैं। जब हम Amazon डेवलपर डैशबोर्ड पर एलेक्सा स्किल बनाते हैं तो हम इस नाम का इस्तेमाल अपने इरादे के लिए करेंगे। इस स्क्रिप्ट को app.py नाम की फ़ाइल में लिखें और चलाएं

अजगर app.py

यह आपके आवेदन को https://localhost:5000 पर प्रदर्शित करेगा। एक ngrok सर्वर चलाएँ और उत्पन्न https लिंक को कॉपी करें। एलेक्सा कौशल को कॉन्फ़िगर करते समय आपको इसकी आवश्यकता होगी। अधिक जानकारी के लिए इस पोस्ट को देखें। हमने एक सरल एप्लिकेशन को सफलतापूर्वक सेट कर लिया है, अब हम एलेक्सा स्किल लिखेंगे। अमेज़ॅन डेवलपर डैशबोर्ड पर नेविगेट करें और लॉग इन करें। एलेक्सा पर क्लिक करें और एलेक्सा स्किल किट के साथ शुरुआत करें

गुई द्वारा दिए गए निर्देशों का पालन करें।

इंटरेक्शन मॉडल टैब के तहत आप निम्नलिखित के साथ इंटेंट स्कीमा बॉक्स भरना चाहेंगे:

{ "इरादे": [{ "इरादा": "खोज" }, { "इरादा": "अमेज़ॅन। हेल्पइंटेंट" }, { "इरादा": "अमेज़ॅन। स्टॉपइंटेंट"}, { "इरादा": "अमेज़ॅन। रद्द इंटेंट" }] }

नमूना कथन बॉक्स में, आप कुछ नमूना आदेश लिखना चाहते हैं जो एक व्यक्ति कौशल का आह्वान करने के लिए उपयोग कर सकता है। हमने इन्हें लिखा है:

खोज कुंजियाँ मेरी कुंजियाँ ढूँढ़ती हैं जहाँ मेरी कुंजियाँ ढूँढती हैं कुंजियाँ मैंने अपनी कुंजियाँ खो दी हैं

  • कॉन्फ़िगरेशन टैब में, HTTPS के लिए सेवा समाप्ति बिंदु चुनना सुनिश्चित करें। अपने https लिंक को कॉपी करें और नीचे दिए गए डिफ़ॉल्ट बॉक्स में पेस्ट करें। खाता लिंकिंग को नंबर पर छोड़ा जा सकता है।
  • SSL प्रमाणपत्र में मध्य विकल्प चुनें, "मेरा विकास समापन बिंदु उस डोमेन का उप-डोमेन है जिसके पास प्रमाणपत्र प्राधिकारी से वाइल्डकार्ड प्रमाणपत्र है"।
  • टेस्ट टैब आपको अपने एक सैंपल कमांड में टाइप करके नए कौशल का परीक्षण करने की अनुमति देगा।

सभी चेक मार्क हरे होने तक अंतिम दो टैब भरना समाप्त करें। फिर बीटा परीक्षण सुविधा के साथ अपना कौशल लॉन्च करें। यह आपको अपने कौशल को प्रकाशित करने से पहले किसी भी इको डिवाइस पर होस्ट करने की अनुमति देता है। अपने इको डिवाइस पर कौशल स्थापित करने के लिए ईमेल लिंक पर दिए गए निर्देशों का पालन करें।

चरण 3: हमारे कौशल को स्मार्ट बनाना

हमारे कौशल को स्मार्ट बनाना
हमारे कौशल को स्मार्ट बनाना
हमारे कौशल को स्मार्ट बनाना
हमारे कौशल को स्मार्ट बनाना
हमारे कौशल को स्मार्ट बनाना
हमारे कौशल को स्मार्ट बनाना

हमने आरएसएसआई सिग्नल की शक्ति की रिपोर्ट करने के लिए ब्लूटूथ बीकन को क्वेरी करने के लिए पूरे घर में फैले निष्क्रिय कंप्यूटरों को काम में लगाया।

कई मशीनों से रीडिंग लेते हुए, हम सिग्नल की शक्ति का उपयोग दूरी के लिए प्रॉक्सी के रूप में कर सकते हैं। हमें यह पता लगाने की आवश्यकता है कि बीकन को खोजने के लिए घर के सबसे संभावित हिस्से की गणना करने के लिए इसका उपयोग कैसे करें।

हम मशीन लर्निंग की ओर मुड़ते हैं। हर 2 मिनट में एक क्रॉस्टैब जॉब, RSSI टुपल्स का एक डेटासेट बनाता है। बीकन को विभिन्न स्थानों जैसे: 'बेडरूम', 'बाथरूम', 'रसोई', 'लिविंग एरिया' में रखकर हम RSSI लॉग्स को लेबल करते हैं। एक बार जब हम घर की मैपिंग कर लेते हैं, तो हम xgboost के XGBClassifier जैसे ट्री-आधारित मॉडल का उपयोग कर सकते हैं।

ग्रेडिएंट बूस्टिंग का xgboost कार्यान्वयन कुछ सेकंड में टाइम आउट रीडिंग, प्रशिक्षण से लापता डेटा को संभाल लेगा। प्रशिक्षित मॉडल को बनाए रखने और हमारे एलेक्सा रिट्रीवर एप्लिकेशन में लोड करने के लिए पायथन अचार का उपयोग करें। जब कौशल को बुलाया जाता है, तो एप्लिकेशन ब्लूटूथ आरएसएसआई रीडिंग को देखता है और एक अनुमानित स्थान उत्पन्न करता है, एलेक्सा 'बाथरूम में देखने की कोशिश करने' का सुझाव देते हुए उत्तर दे सकती है।

चरण 4: यह सब एक साथ रखना

चाबियों के अंतिम स्थान का अनुमान लगाने के लिए एक मॉडल होने के कारण, हम एलेक्सा द्वारा दिए गए विवरण को बेहतर बनाने के लिए इसे एप्लिकेशन में जोड़ सकते हैं। हमने पढ़ने के लिए स्क्रिप्ट को संशोधित किया है:

आयात osfrom फ्लास्क आयात फ्लास्क_ask आयात से फ्लास्क आयात करें, कथन आयात pexpect आयात अचार आयात पांडा के रूप में पीडी आयात numpy के रूप में संग्रह से आयात डिफ़ॉल्ट डिक्ट, रिवर्स_रीड से काउंटर आयात करें रिवर्स_रीडलाइन ऐप = फ्लास्क (_name_) पूछें = पूछें (ऐप, '/') @ Ask.intent('findkeys') def retrievr(): os.system("/path/to/repo/sound_alarm.py &") स्पीच_टेक्स्ट = अनुमान_लोकेट () रिटर्न स्टेटमेंट (speech_text) def अनुमान_लोकेट (): read_dict = {} line_gen = reverse_readline('Your_DATA_FILE.txt') res_lst = जबकि len(res_lst) != 20: ln = next(line_gen) अगर ln.startswith ('होस्ट'): _, ip, _, पढ़ना = ln.split () read_dict[ip] = पढ़ने res_lst.append(read_dict) if ip == 'ip.of.one.computer': read_dict = {} और: पास वैल = pd. DataFrame(res_lst).replace({'N/ A': np.nan})। मान mdl_ = अचार। लोड (खुला ('location_model_file.dat', 'rb')) preds = mdl_.predict(val) अनुमान = काउंटर (पूर्वानुमान) अनुमान = अनुमान।) [0] [0] उत्तर_स्ट्र = 'यदि अनुमान == 1: उत्तर_स्ट्र + = 'बेडरूम' एलिफ अनुमान है तो 'में देखने का प्रयास करें' == 2: उत्तर_स्ट्र + = 'बाथरूम' एलिफ अनुमान == 3: उत्तर_स्ट्र + = 'रसोई' एलिफ अनुमान == 4: उत्तर_स्ट्र + = 'लिविंग रूम' रिटर्न रिप्लाई_स्ट्र अगर _name_ == "_main_": ऐप। रन (होस्ट ='127.0.0.1', पोर्ट='5000')

हमने एक नया फंक्शन बनाया है जिसे गेस_लोकेट () कहा जाता है जो नवीनतम रिकॉर्ड की गई rssi सिग्नल स्ट्रेंथ वाली फाइल लेता है। इसके बाद यह हमारे अचार वाले xgboost मॉडल के खिलाफ नमूने चलाएगा और सबसे संभावित स्थान स्ट्रिंग लौटाएगा। एलेक्सा के संकेत मिलने पर यह स्थान वापस कर दिया जाएगा। चूंकि बीकन से कनेक्शन स्थापित करने में कुछ सेकंड लग सकते हैं, हम उस फ़ंक्शन को sound_alarm.py में कॉल करने के लिए एक अलग प्रक्रिया चलाते हैं।

सिफारिश की: