Obsah:

Alexa, kde jsou moje klíče?: 4 kroky
Alexa, kde jsou moje klíče?: 4 kroky

Video: Alexa, kde jsou moje klíče?: 4 kroky

Video: Alexa, kde jsou moje klíče?: 4 kroky
Video: Jak odemknout fabii bez klíčů rukama za 2 vteřiny 2024, Červenec
Anonim
Image
Image
Hackování majáků Bluetooth
Hackování majáků Bluetooth

Alexa je obzvláště vhodná pro úkoly získávání informací a monitorování aktiv pomocí bezdrátových domácích sítí. Je přirozené zvážit umístění cenností na mřížku pro rychlé získání. Nabouráváme levné bluetooth nízkoenergetické majáky pro dosah sítě a životnost baterie a stavíme chytrou aplikaci, aby Alexa věděla, kde jsme klíče nechali.

Jak to udělat…

Krok 1: Hackování majáků Bluetooth

Sada 3 majáků lze zakoupit za méně než 15 USD a jsou podporována aplikacemi pro Android/iOS, ale odhlásíme se z důvodu ochrany osobních údajů. Kromě toho by nalezení klíčů nemělo vést k nalezení našeho telefonu.

Tento výukový program adafruit o inteligentních světlech reverzního inženýrství nám pomohl ovládat majáky. Začněte zapnutím skenování majáku pro adresu zařízení spuštěním:

sudo hcitool lescan

Najděte a zkopírujte adresu označenou názvem „iTag“a poté spusťte:

sudo gatttool -I

Připojte se k zařízení interaktivně spuštěním:

připojte AA: BB: CC: DD: EE: FF

Zkuste spustit 'nápovědu' pro zobrazení možností nebo 'primární' pro zobrazení služeb:

Po spuštění 'char-desc' následovaném servisním držadlem, jak je uvedeno výše, najdeme UUID, které vyhledáme odkazem na specifikace charakteristik gatt a specifikace služeb. Další informace o těchto službách najdete na tomto webu. Nyní máme jednoduchou funkci pythonu:

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')

Dále se zaměříme na vytvoření dovednosti Alexa pro spuštění majáku, když hledáme klíče.

Krok 2: Vytvoření dovednosti a aplikace Alexa

Vytvoření dovednosti a aplikace Alexa
Vytvoření dovednosti a aplikace Alexa
Vytvoření dovednosti a aplikace Alexa
Vytvoření dovednosti a aplikace Alexa

Vytváříme dovednost, která bude propojena s místním serverem. Poté nakonfigurujeme náš server tak, aby provedl jakoukoli akci, kterou bychom chtěli, v tomto případě poskytneme přibližné informace o tom, kde mohou být klíče umístěny, a vydáme zvukový signál Bluetooth. Flask poskytuje jednoduchou a snadno použitelnou knihovnu pythonu k obsluze aplikace. Pomocí flask-ask můžeme nakonfigurovat server tak, aby komunikoval s naší schopností Alexa, kterou vytvoříme později. Dobře sloužte aplikaci s Ngrok, což nám poskytne odkaz https, který budeme potřebovat pro naši dovednost Alexa. Nejprve jsme aplikaci vytvořili s nejjednodušší funkcí: aby náš maják BLE při spuštění pípnul.

#!/usr/bin/env python z baňky import Baňka z flask_ask import Ask, příkaz import pexpect app = Flask (_ name_) ask = Ask (aplikace, '/') BD_ADDR = 'AA: BB: CC: DD: EE: FF '#Váš identifikátor bluetooth majáku zde @ask.intent (' findkeys ') def retrievr (): sound_alarm () speech_text = "Vaše klíče jsou někde tady." 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')

K pípnutí BLE jsme použili funkci sound_alarm (), kterou jsme napsali dříve. Pro funkci, která bude použita pro záměr, přidáme dekorátora dotazu pomocí našich záměrných „vyhledávacích klíčů“. Když uděláme dovednosti Alexa na hlavním panelu pro vývojáře Amazonu, použijeme toto jméno pro svůj záměr. Zapište tento skript do souboru s názvem app.py a spusťte

python app.py

To bude sloužit vaší aplikaci na https:// localhost: 5000. Spusťte server ngrok a zkopírujte vygenerovaný odkaz https. Budete to potřebovat při konfiguraci dovednosti Alexa. Další podrobnosti najdete v tomto příspěvku. Úspěšně jsme vytvořili jednoduchou aplikaci, nyní napíšeme dovednost Alexa. Přejděte na hlavní panel vývojářů Amazon a přihlaste se. Klikněte na Alexa a začněte se sadou Alexa Skill

Postupujte podle pokynů gui.

Na kartě Interation Model budete chtít vyplnit pole Intent Schema následujícím:

Do pole Ukázkové výpovědi chcete napsat několik ukázkových příkazů, které by osoba mohla použít k vyvolání dovednosti. Napsali jsme tyto:

Findkeys najdi moje klíče

  • Na kartě Konfigurace vyberte koncový bod služby pro HTTPS. Zkopírujte odkaz https a vložte jej do pole Výchozí pod ním. Propojení účtu lze ponechat na Ne.
  • V certifikátu SSL vyberte střední možnost „Můj koncový bod vývoje je subdoménou domény, která má zástupný certifikát od certifikační autority“.

  • Karta Test vám umožní otestovat nové dovednosti zadáním některého z vašich ukázkových příkazů.

Dokončete vyplňování posledních dvou karet, dokud nebudou všechny zatržítka zelené. Poté spusťte své dovednosti pomocí funkce beta testování. To vám umožní hostit své dovednosti na jakémkoli zařízení pro echo před jeho publikováním. Podle pokynů v e -mailovém odkazu nainstalujte dovednost do svého echo zařízení.

Krok 3: Naše dovednosti budou chytřejší

Naše dovednosti jsou chytřejší
Naše dovednosti jsou chytřejší
Naše dovednosti jsou chytřejší
Naše dovednosti jsou chytřejší
Naše dovednosti jsou chytřejší
Naše dovednosti jsou chytřejší

Nechali jsme nečinné počítače rozmístěné po celém domě, aby pracovaly na dotazování majáku bluetooth pro hlášení síly signálu RSSI.

Když odebíráme údaje z více počítačů, můžeme použít sílu signálu jako proxy pro vzdálenost. Musíme zjistit, jak to použít k výpočtu nejpravděpodobnější části domu k nalezení majáku.

Obracíme se na strojové učení. Úloha crontab každé 2 minuty vytváří datovou sadu řazených řadičů RSSI. Umístěním majáku na různá místa jako: „Ložnice“, „Koupelna“, „Kuchyně“, „Obývací prostor“označujeme protokoly RSSI. Jakmile zmapujeme domov, můžeme použít stromové modely, jako je XGBClassifier xgboost.

Implementace gradientu xgboost zvládne chybějící data z vypršení časového limitu, trénink za pár sekund. Použijte pythonový nátěr k zachování natrénovaného modelu a načtení do naší aplikace alexa retrievr. Když je dovednost vyvolána, aplikace vyhledá čtení bluetooth RSSI a vygeneruje předpokládané umístění, alexa může odpovědět a navrhnout „zkuste se podívat do koupelny“.

Krok 4: Dát to všechno dohromady

Když máme model pro přiblížení posledního umístění klíčů, můžeme jej přidat do aplikace, abychom vylepšili prohlášení vrácené Alexou. Upravili jsme skript tak, aby četl:

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 ("/path/to/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] = čtení 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) odhad = Counter (preds) odhad = odhad.most_common (1) [0] [0] answer_str = 'Zkuste se podívat do' if odhad == 1: answer_str += 'ložnice' elif odhad 2 = '127.0.0.1', port = '5000')

Vytvořili jsme novou funkci s názvem guess_locate (), která přebírá soubor s nejnovějšími zaznamenanými silami signálu rssi. Poté spustí vzorky proti našemu nakládanému modelu xgboost a vrátí nejpravděpodobnější řetězec umístění. Toto umístění bude vráceno, jakmile bude Alexa vyzván. Protože navázání připojení k majáku může trvat několik sekund, spustíme samostatný proces, který tuto funkci volá v sound_alarm.py.

Doporučuje: