Inženýři poprvé prokázali schopnost sledovat zařízení pomocí signálů Bluetooth
Po přečtení článku „Čína chce občanům zakázat používání Wi-Fi a Bluetooth“ jsem přemýšlel o tom, jak lze zapnutá zařízení Bluetooth využívat různými způsoby, aniž byste se k nim připojovali (ačkoli článek samotný je věnován šíření nelegálního obsahu ). Každé zařízení Bluetooth je v podstatě malý maják, který neustále komunikuje se světem. A pokud se při hledání známých sítí Wi-Fi již zařízení naučila poskytovat náhodnou falešnou MAC adresu, pak, pokud vím, pro Bluetooth to zatím neplatí (opravte mě, pokud se mýlím).
Toto chování Bluetooth zařízení lze využít jak pro komerční účely (například počítání stálých zákazníků v obchodě), tak pro jiné účely (například pro sledování a sledování osoby).
Výhradně jako experiment byl v Automate napsán malý algoritmus, který každých 15 sekund skenuje zařízení Bluetooth a ukládá jména, adresy a umístění do protokolu:
Na zařízení musí být předem vytvořen prázdný soubor (tento algoritmus nekontroluje přítomnost souboru a nevytváří nový – rychlost experimentu byla důležitější než optimalizace).
Dostaneme soubor něco takového:
Připravme soubor pro další analýzu, analyzujeme jej do sloupců:
import pandas as pd import csv # Исходный файл input_file = "btlog.txt" # Файл, куда будут записаны данные output_file = "formatted_file.csv" with open(input_file, 'r', encoding='utf-8') as inp, open(output_file, 'w', newline='', encoding='utf-8') as out: writer = csv.writer(out) writer.writerow(["device name", "device address", "advertiser", "location", "datetime"]) for row in csv.reader(inp, delimiter=';'): device_names = row[0].split(", ") device_addresses = row[1].split(", ") advertisers = row[2].split(", ") location = f", " datetime = row[5] min_len = min(len(device_names), len(device_addresses), len(advertisers)) for i in range(min_len): writer.writerow([device_names[i], device_addresses[i], advertisers[i], location, datetime])
Získáme harmoničtější tabulku následujícího tvaru
Nyní potřebujeme nástroj, který vám umožní vybrat zařízení ze seznamu a zobrazit na mapě, kde bylo zařízení nalezeno.
Otevřete Google Colab, přidejte soubor CSV do adresáře a napište samotný nástroj.
!pip install pandas folium ipywidgets import pandas as pd import folium from ipywidgets import interact
Příprava dat z tabulky a formátování hodnot:
df = pd.read_csv('formatted_file.csv', sep=',') df['location'] = df['location'].apply(lambda x: [float(i) for i in x.split(',')]) df['datetime'] = pd.to_datetime(df['datetime']) df['device address'] = df['device address'].str.strip() # удаление пробелов в начале и конце строки df['device name'] = df['device name'].str.strip() # удаление пробелов в начале и конце строки df['frequency'] = df.groupby('device address')['device address'].transform('count') df = df.sort_values(by='frequency', ascending=False) # Создание нового столбца 'device_info', объединяющего 'device name' и 'device address' для свитка с выбором устрйоства df['device_info'] = df['device name'].fillna('unknown') + ' - ' + df['device address']
Vytváříme rozevírací seznam s výběrem zařízení:
@interact def search_device(device=list(df['device_info'].unique())): return df[df['device_info'] == device]
Vizualizace dat na mapě:
def visualize_on_map(device_info): device_data = df[df['device_info'] == device_info] m = folium.Map(location=device_data['location'].iloc[0], zoom_start=13) for _, row in device_data.iterrows(): folium.Marker( location=row['location'], popup=folium.Popup('Дата: ' + str(row['datetime']), max_width=300) ).add_to(m) return m @interact def interact_map(device=list(df['device_info'].unique())): return visualize_on_map(device)
Výsledkem je rozevírací seznam. Po výběru vhodného zařízení z něj vidíme na mapě, kde bylo nalezeno, a když klikneme na bod, zobrazí se datum a čas:
V datech jsou nějaké chyby. Například muž se zapnutou 60palcovou televizí šel za mnou sotva kilometr a já si toho nevšiml. S největší pravděpodobností se umístění nestihlo aktualizovat. Telefony se ohlásí jen zřídka, ale hodinky, sluchátka a další zařízení to dělají neustále.
Vše není nic jiného než důkaz koncepce pro provádění samotného experimentu.
Na základě výsledků tohoto experimentu je zřejmé, že často ledabyle prozradíme informace o naší poloze a pohybu. Nevědomky zaregistrujeme naši přítomnost tím, že necháme zapnuté Bluetooth na našem smartphonu. Tento experiment ukazuje, že ze shromážděných dat můžete zjistit, kde a se kterými lidmi se nejčastěji křížíte, aniž byste o tom věděli (aniž byste si jich všimli v davu, v dopravě nebo v nákupním centru), a také jak snadné je určit vaši přítomnost na konkrétním místě (pokud je tam skener zařízení Bluetooth a je známa MAC adresa některého z vašich gadgetů).
Z hlediska bezpečnosti informací to může být riziko. Chcete-li to snížit, doporučujeme vypnout Bluetooth, když se nepoužívá.
Systém lze vyvinout, zkomplikovat, udělat z něj síť Bluetooth zařízení se sledováním na konkrétních místech atd. Možnosti závisí na vašich cílech.
- Bluetooth
- zabezpečení
- bezdrátové technologie
- sledování
- Informační bezpečnost
- PYTHON
- Bezdrátová technologie
- Vizualizace dat
- Prototypování