Obsah:

Alexa, kde sú moje kľúče?: 4 kroky
Alexa, kde sú moje kľúče?: 4 kroky

Video: Alexa, kde sú moje kľúče?: 4 kroky

Video: Alexa, kde sú moje kľúče?: 4 kroky
Video: КАК НАСТРОИТЬ L4D2 2024, Júl
Anonim
Image
Image
Hackovanie majákov Bluetooth
Hackovanie majákov Bluetooth

Alexa je obzvlášť vhodná pre úlohy získavania informácií a monitorovanie aktív pomocou bezdrôtových domácich sietí. Je prirodzené zvážiť umiestnenie cenností na mriežku na rýchle získanie. Hackujeme lacné nízkoenergetické majáky bluetooth pre dosah siete a životnosť batérie a staviame inteligentnú aplikáciu, aby Alexa vedela, kde sme nechali kľúče.

Ako to spraviť…

Krok 1: Hackovanie majákov Bluetooth

Súpravu 3 majákov je možné kúpiť za menej ako 15 dolárov a sú podporované aplikáciami pre Android/iOS, ale odmietneme ochranu osobných údajov. Okrem toho by nájdenie našich kľúčov nemalo znamenať nájdenie nášho telefónu.

Tento návod na používanie inteligentných svetiel pre reverzné inžinierstvo nám pomohol ovládať majáky. Začnite zapnutím skenovania majákov pre adresu zariadenia spustením:

sudo hcitool lescan

Nájdite a skopírujte adresu označenú názvom „iTag“a spustite:

sudo gatttool -I

Pripojte sa k zariadeniu interaktívne spustením:

pripojiť AA: BB: CC: DD: EE: FF

Skúste spustiť 'pomoc' pre zobrazenie možností alebo 'primárny' pre zobrazenie služieb:

Po spustení príkazu „char-desc“, za ktorým nasleduje servisná rukoväť, ako je uvedené vyššie, nájdeme UUID, ktoré vyhľadáme odkazom na charakteristické vlastnosti a servisné špecifikácie gatt. Ak sa chcete dozvedieť viac o týchto službách, pozrite sa na to. Pri kontrole prevádzky s Wiresharkom zistíme, že 0100111000000001 spustí alarm a logicky ho 0000111000000001 vypne. Teraz máme jednoduchú funkciu python:

import pexpectdef sound_alarm (BD_ADDR): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Connection successful', timeout = 30) child.sendline ('char-write-cmd 0x000b 0100111000000001')

Ďalej sa zameriame na vytvorenie zručnosti Alexa na spustenie majáka pri hľadaní kľúčov.

Krok 2: Vytvorenie zručnosti a aplikácie Alexa

Vytvorenie zručnosti a aplikácie Alexa
Vytvorenie zručnosti a aplikácie Alexa
Vytvorenie zručnosti a aplikácie Alexa
Vytvorenie zručnosti a aplikácie Alexa

Vytvárame zručnosť, ktorá bude prepojená s lokálnym serverom. Potom nakonfigurujeme náš server tak, aby vykonal akúkoľvek akciu, ktorú by sme chceli, v tomto prípade poskytnite približný odhad umiestnenia kľúčov a pípnutie majáku Bluetooth. Flask poskytuje jednoduchú a ľahko použiteľnú knižnicu pythonu na obsluhu aplikácie. Prostredníctvom flask-ask môžeme server nakonfigurovať tak, aby komunikoval s našimi schopnosťami Alexa, ktoré vytvoríme neskôr. Dobre poslúžte aplikácii s Ngrokom, ktorá nám poskytne odkaz https, ktorý budeme potrebovať pre našu zručnosť Alexa. Najprv sme vytvorili aplikáciu s najjednoduchšou funkčnosťou: aby náš maják BLE pri spustení pípol.

#!/usr/bin/env python z fľaše importujte banku z flask_ask import Ask, príkaz import pexpect app = Flask (_ name_) ask = Ask (app, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '#Váš identifikátor majáku bluetooth tu @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Vaše kľúče sú niekde tu." return statement (speech_text) def sound_alarm (): child = pexpect.spawn ('gatttool -I') child.sendline ('connect {}'. format (BD_ADDR)) child.expect ('Connection successful', timeout = 60) child.sendline ('char-write-cmd 0x000b 0100111000000001') if _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')

Na spustenie zvukového signálu BLE sme použili funkciu sound_alarm (), ktorú sme napísali predtým. Pre funkciu, ktorá bude použitá pre zámer, pridáme dekorátora ask s našimi zámermi „findkeys“. Keď na informačnom paneli vývojárov Amazonu dosiahneme zručnosť Alexa, použijeme tento názov na svoj zámer. Tento skript napíšte do súboru s názvom app.py a spustite ho

python app.py

To bude slúžiť vašej aplikácii na https:// localhost: 5000. Spustite server ngrok a skopírujte vygenerovaný odkaz https. Budete to potrebovať pri konfigurácii zručnosti Alexa. Viac informácií nájdete v tomto príspevku. Úspešne sme vytvorili jednoduchú aplikáciu, teraz napíšeme zručnosť Alexa. Prejdite na hlavný panel vývojárov Amazonu a prihláste sa. Kliknite na Alexa a začnite so súpravou Alexa Skill

Postupujte podľa pokynov, ktoré vám poskytol gui.

Na karte Interation Model budete chcieť vyplniť pole Schéma zámeru nasledujúcim spôsobom:

Do poľa Ukážkové výpovede chcete napísať niekoľko ukážkových príkazov, ktoré by osoba mohla použiť na vyvolanie zručnosti. Napísali sme tieto:

Findkeys find my keyfindkeys where my keys findkeyys Stratila som kľúče

  • Na karte Konfigurácia vyberte koncový bod služby pre HTTPS. Skopírujte svoj odkaz https a vložte ho do predvoleného poľa pod ním. Prepojenie účtu môžete ponechať na Nie.
  • V certifikáte SSL vyberte strednú možnosť „Môj koncový bod vývoja je subdoménou domény, ktorá má zástupný certifikát od certifikačnej autority“.
  • Karta Test vám umožní otestovať nové zručnosti zadaním jedného zo vzorových príkazov.

Dokončite vypĺňanie posledných dvoch záložiek, kým nie sú všetky značky začiarknutia zelené. Potom spustite svoje schopnosti pomocou funkcie beta testovania. To vám umožní hostiť svoje schopnosti na akomkoľvek zariadení na ozveny pred jeho zverejnením. Nainštalujte si zručnosti do svojho zariadenia na ozveny podľa pokynov v e -mailovom odkaze.

Krok 3: Zlepšenie našich schopností

Aby bola naša zručnosť múdrejšia
Aby bola naša zručnosť múdrejšia
Aby bola naša zručnosť múdrejšia
Aby bola naša zručnosť múdrejšia
Aby bola naša zručnosť múdrejšia
Aby bola naša zručnosť múdrejšia

Nechali sme nečinné počítače rozmiestnené po celom dome, aby pracovali na dotazovaní majáku bluetooth na hlásenie sily signálu RSSI.

Na základe meraní z viacerých počítačov môžeme silu signálu použiť ako zástupný znak vzdialenosti. Musíme zistiť, ako to použiť na výpočet najpravdepodobnejšej časti domu na nájdenie majáka.

Prejdeme k strojovému učeniu. Úloha crontab každé 2 minúty vytvára množinu údajov o množinách RSSI. Umiestnením majáka na rôzne miesta, ako sú: „Spálňa“, „Kúpeľňa“, „Kuchyňa“, „Obývací priestor“, označíme protokoly RSSI. Akonáhle budeme mať zmapovaný domov, môžeme použiť stromové modely, ako napríklad XGBClassifier xgboost.

Implementácia gradientu xgboost zvládne chýbajúce údaje z vypršania časového limitu čítania a školenia za pár sekúnd. Na udržanie natrénovaného modelu použite nakladač pythonu a načítajte ho do našej aplikácie alexa retrievr. Keď sa zručnosť zavolá, aplikácia vyhľadá čítanie bluetooth RSSI a vygeneruje predpokladané miesto, alexa môže odpovedať a navrhnúť „skúste sa pozrieť do kúpeľne“.

Krok 4: Dajte to všetko dohromady

Keď máme model na aproximáciu posledného umiestnenia kľúčov, môžeme ho pridať do aplikácie a zlepšiť tak vyhlásenie, ktoré vrátil Alexa. Skript sme upravili tak, aby čítal:

import osfrom flask import Flask from flask_ask import Ask, statement import pexpect import pickle import pandas as pd import numpy as np from collections import defaultdict, Counter from reverse_read import reverse_readline app = Flask (_ name_) ask = Ask (app, '/') @ ask.intent ('findkeys') def retrievr (): os.system ("/cesta/k/repo/sound_alarm.py &") line_gen = reverse_readline ('YOUR_DATA_FILE.txt') res_lst = while len (res_lst)! = 20: ln = next (line_gen) if ln.startswith ('Host'): _, ip, _, reading = ln.split () read_dict [ip] = čítanie res_lst.append (read_dict) if ip == 'ip.of.one.computer': read_dict = {} else: pass val = pd. DataFrame (res_lst).replace ({'N/ A ': np.nan}). Values mdl_ = pickle.load (open (' location_model_file.dat ',' rb ')) preds = mdl_.predict (val) hádať = počítadlo (preds) hádať = hádať.most_common (1] [0] [0] answer_str = 'Skúste sa pozrieť na' if odhad == 1: answer_str += 'spálňu' hádať == 2: answer_str += 'kúpeľňa' elif odhad == 3: answer_str += 'kuchyňa' elif odhad == 4: answer_str += 'obývačka' návrat response_str if _name_ == "_main_": app.run (host = '127.0.0.1', port = '5000')

Vytvorili sme novú funkciu s názvom guess_locate (), ktorá zaberá súbor s najnovšími zaznamenanými silami signálu rssi. Potom vzorky spustí proti nášmu nakladanému modelu xgboost a vráti najpravdepodobnejší reťazec umiestnenia. Toto miesto bude vrátené, keď bude Alexa vyzvaná. Pretože nadviazanie spojenia s majákom môže trvať niekoľko sekúnd, spustíme samostatný proces, ktorý túto funkciu volá v sound_alarm.py.

Odporúča: