Чтобы сделать собственное уникальное устройство для «умного дома» сейчас достаточно купить микроконтроллер и электронные компоненты. Конечно, на рынке уже есть множество «умных» устройств, но не все производители предоставляют открытое API, и уж точно единицы разрешают (или по крайней мере не запрещают) создавать собственные прошивки. Иногда наступает тот момент, когда кажется, что разработать и запрограммировать собственное устройство будет лучшим решением.
В этой статье я расскажу про несколько способов «научить» микроконтроллер распознавать присутствие людей дома исключительно с помощью Wi-Fi.
Предисловие
Источник изображения
Мне с детства нравились часы. Конечно, желания заполнить всю комнату звенящими часами, словно Доктор Браун, у меня не было, но часов в моей комнате было достаточно. Тем не менее, пришлось повзрослеть и желание иметь множество часов как-то приутихло.
Наступила взрослая самостоятельная жизнь и вопрос с часами стал одним из маленьких конфликтов интересов. Мне хотелось иметь светящиеся часы, которые ненавязчиво покажут время в любое время дня и ночи. Моя девушка же придерживается мнения, что никакой свет, даже слабый, не должен препятствовать засыпанию.
Компромисс находился простой: в процессе подготовки ко сну выключать часы. Правда, их нужно с утра как-то включить, что в свою очередь нерационально: проще взять телефон, там время тоже есть. Значит, нужно как-то автоматически определять моменты, подходящие для отключения и включения часов.
Быстро проанализировав подготовку ко сну, я обнаружил там повторяющееся действие, а именно, отключение Wi-Fi на телефоне. Такой триггер позволит «умным» часам выключаться не по сухому «расписанию», а в нужные моменты времени.
Давайте определимся, из чего состоят часы и какие ограничения накладываются на окружение.
Что там внутри
Подключение платы к светодиодной матрице (источник alexgyver.ru)
Набор юного «самодельщика» прост:
- плата Wemos D1 Mini на базе чипа ESP8266 с Wi-Fi;
- светодиодная WS2812B-совместимая матрица размером 32х8;
- блок питания 5В, 2А;
- для разработки прошивки используется Arduino IDE.
Разумеется, полагаться на внутренние часы микроконтроллера неразумно и нужна отдельная плата часов реального времени. Однако, согласно любительскому исследованию, скорость расхождения внутреннего времени микроконтроллера составляет примерно одну секунду в день. Это не критично для настенных часов, а при наличии доступа в интернет, синхронизация с сервером времени решит проблему.
Минимальные вложения для сборки данного устройства накладывают следующие ограничения:
- в домашней сети отсутствуют какие-либо системы, выполняющие мониторинг сети;
- допустимы изменения в конфигурации домашнего роутера;
- допустимы изменения в конфигурации сетевого подключения на телефоне;
- модификация ПО домашнего роутера запрещена;
- модификация ПО телефона запрещена.
Под модификацией ПО подразумевается создание собственных программных решений, которые по событиям в операционной системе телефона могут отправить команду. Во-первых это «не спортивно», а во-вторых потребует кроссплатформенной разработки, если захочется включить в поддержку чей-то iPhone, а потом и пару ноутбуков с разными операционными системами.
Современные устройства умеют подменять MAC-адрес во имя конфиденциальности
Единственный уникальный идентификатор, с помощью которого можно найти телефон в домашней сети — MAC-адрес. Однако, современная техника умеет генерировать «подставной» MAC-адрес, что усложняет определение устройства. Тем не менее, для заданных Wi-Fi-сетей эту опцию можно отключить.
Итак, у нас есть MAC-адрес, что будем делать?
Поиск устройства
Можно придумать несколько вариантов в зависимости от искомого устройства и используемого маршрутизатора/точки доступа.
Большую часть решений объединяет одно: подключение к домашнему Wi-Fi. Минимальный код, с которым будем работать.
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
void setup() {
Serial.begin(115200);
WiFiManager wifiManager;
wifiManager.setDebugOutput(false);
wifiManager.autoConnect("habr-example", "supergeneral");
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
/* Здесь также инициализация для FastLED и других библиотек,
* которые не важны для данного примера
**/
}
void loop() {
// Основной код
ledTick();
}
Для упрощения работы с Wi-Fi используется библиотека WiFiManager. Если в памяти микроконтроллера нет информации о известных точках или они недоступны, WiFiManager запустит собственную точку доступа с веб-интерфейсом для быстрого подключения к новому Wi-Fi.
Кто там
Самое простое решение всегда на поверхности: давайте «пинганем» телефон. На поверку, в мире микроконтроллеров протокол ICMP используется неохотно. Так, в lwIP (lightweight IP, реализации стека TCP/IP для встраиваемых систем) есть минимальная поддержка протокола ICMP, но этого недостаточно. Для наших целей придется поставить библиотеку ESP8266-ping.
Для уведомления об успешном или неуспешном пинге библиотека использует функции обратного вызова. Напишем функцию с простой логикой:
- если устройство было недоступно, а сейчас доступно — устройство появилось в сети;
- если устройство недоступно MAX_PING попыток подряд — устройство ушло из сети.
#define MAX_PING 5
boolean current_state = false;
unsigned char attempts = 0;
void* responseCallback(const PingerResponse& response) {
if(response.ReceivedResponse) {
if(current_state == false) {
attempts = 0;
current_state = true;
Serial.println("Device on");
}
} else {
if(current_state == true) {
attempts++;
if(attempts > MAX_PING) {
current_state = false;
Serial.println("Device off");
}
}
}
return (void*)true;
}
Инициализируем библиотеку ESP8266-ping:
#define PING_INTERVAL 1000
Pinger pinger;
void setup() {
// Общая инициализация опущена
pinger.OnReceive(&responseCallback);
}
Так как пинг — не единственная наша задача, создаем функцию, которая раз в PING_INTERVAL миллисекунд отправляет ICMP-пакет.
unsigned long previousTime = 0;
void pingTick() {
if(millis() - previousTime > PING_INTERVAL) {
previousTime = millis();
pinger.Ping("192.168.88.148", 1, PING_INTERVAL / 2);
}
}
void loop() {
// Другие Tick() функции опущены
pingTick();
}
Полный исходный текст
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#include <Pinger.h>
#define MAX_PING 5
#define PING_INTERVAL 1000
Pinger pinger;
boolean current_state = false;
unsigned char attempts = 0;
void* responseCallback(const PingerResponse& response) {
if(response.ReceivedResponse) {
if(current_state == false) {
attempts = 0;
current_state = true;
Serial.println("Device on");
}
} else {
if(current_state == true) {
attempts++;
if(attempts > MAX_PING) {
current_state = false;
Serial.println("Device off");
}
}
}
return (void*)true;
}
unsigned long previousTime = 0;
void pingTick() {
if(millis() - previousTime > PING_INTERVAL) {
previousTime = millis();
pinger.Ping("192.168.88.148", 1, 1000);
}
}
void setup() {
Serial.begin(115200);
WiFiManager wifiManager;
wifiManager.setDebugOutput(false);
wifiManager.autoConnect("habr-example", "supergeneral");
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
pinger.OnReceive(&responseCallback);
}
void loop() {
pingTick();
}
Третий аргумент функции Ping задает время ожидания ответа и ему стоит быть меньше, чем промежутки между пингами. Однако, здесь фигурирует только IP-адрес, еще и явно прописанный в прошивке. Есть два решения данной ситуации:
- в настройках DHCP-сервера явно «прибить» адрес к MAC-адресу искомого устройства;
- пинговать все адреса подсети и проверять MAC-адрес.
При условии, что часы — это домашнее устройство, а домашнюю сеть и телефоны не меняют пять раз на дню, то первое решение выглядит достойно. При этом время реакции часов на выход устройства из сети — MAX_PING * PING_INTERVAL миллисекунд.
Но случаются вредные устройства, которые не отвечают на ICMP-запросы.
Открывайте! Мы знаем, что вы тут
Далеко за примером ходить не надо: операционная система Microsoft Windows по умолчанию игнорирует ICMP-запросы. Такой расклад дел не сильно усложняет жизнь. Устройство может игнорировать ICMP-запросы, но ARP-запросы ему проигнорировать не получится. Поэтому для «особо вредных» устройств у нас более хитрый план: очищаем ARP-таблицу, отправляем несколько пингов, проверяем ARP-таблицу.
ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса по IP-адресу другого компьютера. © Википедия
Особенность ARP-протокола заключается в том, что он работает только в пределах одного Ethernet-сегмента. Тем не менее, ожидается, что домашняя сеть не должна быть сложной.
Доступ к ARP-таблицам на ESP8266 возможен через функции lwIP. Эти функции — для смелых и простым смертным не нужны, поэтому примеров и объяснений достаточно мало, нужно читать еще и комментарии к коду. Добавляем в проект включение заголовочных файлов lwip:
#include <lwip/etharp.h>
Удаляем функцию обратного вызова и изменяем pingTick() следующим образом:
void pingTick() {
if(millis() - previousTime > PING_INTERVAL) {
previousTime = millis();
// IP-адрес искомого устройства, может быть глобальным
IPAddress addr = IPAddress(192,168,88,148);
// Итерация по ARP-таблице
ip4_addr_t *ip;
struct netif *netif;
struct eth_addr *ethaddr;
bool found = false;
for(int i=0; i<ARP_TABLE_SIZE; i++) {
if (etharp_get_entry(i, &ip, &netif, ðaddr)) {
if(addr[0] == (ip->addr & 0xFF) &&
addr[1] == (ip->addr >> 8 & 0xFF) &&
addr[2] == (ip->addr >> 16 & 0xFF) &&
addr[3] == (ip->addr >> 24 & 0xFF)) {
found = true;
}
}
}
// Очищаем ARP-таблицу
etharp_cleanup_netif(netif);
// Запускаем следующий раунд пингов
pinger.Ping(addr, 5, 100);
// Обрабатываем информацию
if(found) {
Serial.println("Device on");
} else {
Serial.println("Device off");
}
}
}
Время реакции этого способа равно PING_INTERVAL, в моем случае я увеличил это число до пяти секунд. Способ потенциально хороший, но в тестах в моей домашней сети он постоянно сбоил и способ с ICMP-ответами работал стабильнее. Поэтому если ваше устройство не скупится отвечать на пинг, то лучше использовать предыдущий способ.
Полный исходный код
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#include <Pinger.h>
#include <lwip/etharp.h>
#define MAX_PING 5
#define PING_INTERVAL 5000
Pinger pinger;
boolean current_state = false;
unsigned char attempts = 0;
unsigned long previousTime = 0;
void pingTick() {
if(millis() - previousTime > PING_INTERVAL) {
previousTime = millis();
// IP-адрес искомого устройства, может быть глобальным
IPAddress addr = IPAddress(192,168,88,148);
// Итерация по ARP-таблице
ip4_addr_t *ip;
struct netif *netif;
struct eth_addr *ethaddr;
bool found = false;
for(int i=0; i<ARP_TABLE_SIZE; i++) {
if (etharp_get_entry(i, &ip, &netif, ðaddr)) {
if(addr[0] == (ip->addr & 0xFF) &&
addr[1] == (ip->addr >> 8 & 0xFF) &&
addr[2] == (ip->addr >> 16 & 0xFF) &&
addr[3] == (ip->addr >> 24 & 0xFF)) {
found = true;
}
}
}
// Очищаем ARP-таблицу
etharp_cleanup_netif(netif);
// Запускаем следующий раунд пингов
pinger.Ping(addr, 5, PING_INTERVAL / 10);
// Обрабатываем информацию
if(found) {
if(current_state == false) {
current_state = true;
Serial.println("Device on");
}
} else {
if(current_state == true) {
current_state = false;
Serial.println("Device off");
}
}
}
}
void setup() {
Serial.begin(115200);
WiFiManager wifiManager;
wifiManager.setDebugOutput(false);
wifiManager.autoConnect("habr-example", "supergeneral");
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
pingTick();
}
Но что делать, если эти варианты по каким-то причинам не подходят?
Чуткий нюх
Микроконтроллер на базе ESP8266 может быть Wi-Fi-сниффером. У него можно включить неразборчивый режим (promiscuous mode) и собирать пролетающие мимо пакеты. Существует несколько репозиториев, в которых есть код запускающий сниффер на вашем ESP8266.
Телефоны с включенным Wi-Fi будут постоянно рассылать разные пакеты, и часть из них не будет иметь шифрования. Таким образом, можно определять наличие или отсутствие телефона в сети.
Несмотря на то, что способ надежный как швейцарские часы,
у данного решения есть ряд проблем:
- если рядом множество Wi-Fi сетей, то поток пакетов будет большим, что потребует самодельного фильтра. Возможно этот фильтр будет медленнее, чем в lwIP.
- В этом режиме ESP8266 не имеет доступа в интернет, так как не подключена к Wi-Fi. Если вы хотели добавить погоду или синхронизацию с NTP — это будет затруднительно.
- Микроконтроллер может «не услышать» пакет от вашего устройства в силу физических причин, а так как пакет не предназначался микроконтроллеру, повторения не будет.
- Сниффер может не понравиться соседям, их друзьям или местным законам.
Но существует более простой, надежный и быстрый способ получения информации о подключенных устройствах.
Уведомления
Этот способ требует соответствующего сетевого оборудования. Если у ваш домашний роутер работает на OpenWRT или RouterOS, то он точно подойдет.
Данный способ построен на парсинге логов маршрутизатора. Маршрутизатор всегда знает MAC-адрес подключившегося и в большинстве случаев выдает адрес с помощью DHCP-сервера. Поэтому, логи маршрутизатора — это самый быстрый и самый надежный способ.
Для моего Mikrotik hAP ac lite лог подключения и отключения выглядит следующим образом. MAC-адреса вымышлены.
wireless,info 80:35:XX:XX:XX:XX@wlan2: disconnected, received deauth: sending station leaving (3)
wireless,info 80:35:XX:XX:XX:X@wlan2: connected, signal strength -44
Настраиваем логирование по метке wireless,info в удаленный порт. Для ускорения обработки на микроконтроллере задействуем протокол UDP. Настраиваем UDP-сервер следующим образом:
#include <WiFiUdp.h>
WiFiUDP syslog;
void setup() {
// Общая инициализация опущена
syslog.begin(514);
}
Далее периодически опрашиваем UDP-сервер на предмет пришедших пакетов.
#define BUF_SIZE 4096
char str[BUF_SIZE];
String masterMac = "80:35:XX:XX:XX:XX";
void syslogTick() {
int packetSize = syslog.parsePacket();
if(packetSize > 0) {
int n = syslog.read(str, BUF_SIZE);
str[n] = '';
String syslog_str = String(str);
String mac = syslog_str.substring(14, 31);
String reason = syslog_str.substring(39);
bool connected = true;
if(reason.startsWith("disconnected")) {
connected = false;
}
if(mac != masterMac) {
return;
}
if(connected) {
Serial.println("Device connected!");
} else {
Serial.println("Device disconnected!");
}
}
}
Пакет содержит MAC-адрес и причину события. Достаточно «разобрать» пришедшую строку и записать состояние.
Этот способ, конечно, тоже обладает недостатком. Так, при перезагрузке микроконтроллера, потребуется узнать текущее состояние искомого устройства. Но для этого можно использовать способ с ICMP-запросом.
Полный исходный код
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#include <WiFiUdp.h>
WiFiUDP syslog;
void setup() {
Serial.begin(115200);
WiFiManager wifiManager;
wifiManager.setDebugOutput(false);
wifiManager.autoConnect(«habr-example», «supergeneral»);
Serial.print(«Connected! IP address: „);
Serial.println(WiFi.localIP());
syslog.begin(514);
}
#define BUF_SIZE 4096
char str[BUF_SIZE];
String masterMac = “80:35:XX:XX:XX:XX»;
void syslogTick() {
int packetSize = syslog.parsePacket();
if(packetSize > 0) {
int n = syslog.read(str, BUF_SIZE);
str[n] = ”;
String syslog_str = String(str);
String mac = syslog_str.substring(14, 31);
String reason = syslog_str.substring(39);
bool connected = true;
if(reason.startsWith(«disconnected»)) {
connected = false;
}
if(connected) {
Serial.println(«Device connected!»);
} else {
Serial.println(«Device disconnected!»);
}
}
}
void loop() {
syslogTick();
}
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
А вы создавали собственные умные устройства?
43.24%
Да, пробовал, получилось
48
11.71%
Да, пытался, но вышла фигня
13
32.43%
Нет, не пробовал, но хотел бы
36
12.61%
Нет и не собираюсь
14
Проголосовали 111 пользователей.
Воздержались 19 пользователей.
Если, например, вы подозреваете соседа в подключении к вашей Wi-Fi сети и не можете удостовериться в своих догадках, приведенная техника может помочь в сборе доказательств.
Автор: Kody
Если вы когда-либо задумывались об отслеживании источника передачи Wi-Fi сигнала, то эта задача решается относительно просто при использовании правильного оборудования.
Например, при помощи направленной Wi-Fi антенны и Wireshark мы можем создать экранный фильтр для любого целевого устройства, находящегося в доступном диапазоне, с целью построения графика мощности сигнала. Перемещая антенну в разные стороны, мы легко можем обнаружить направление, откуда приходит сигнал, наблюдая за пиками мощности на графике.
Зачем искать Wi-Fi сигнал
Если вы когда-либо наблюдали чужую Wi-Fi сеть, то, вероятно, задавались мыслью, можно ли выяснить, откуда исходит сигнал. Источником этого сигнала может быть подозрительная точка доступа, появившаяся рядом с вашим рабочим местом, или новая сеть с сильным сигналом неподалеку от вашего дома, или хотспот от смартфона, который, кажется, является высокомощным и находится чрезвычайно близко.
В любом из вышеуказанных случаев поиск сигнала может помочь в обнаружении клиентских Wi-Fi устройств. Соответственно, вы можете отслеживать местонахождение вредоносных девайсов, внезапно появившихся в вашей беспроводной сети.
Идея отслеживания радиосигналов не является чем-то новым, но для начинающего исследователя, желающего локализовать источник Wi-Fi сети, изначально возможности могут показаться ограниченными. Гуляя по близлежащей территории с устройством (например, со смартфоном), отображающим мощность сигнала, можно наблюдать, как вы приближаетесь и удаляетесь от источника вещания. Однако этот метод недостаточно точный, поскольку Wi-Fi сигнал отражается от стен и других препятствий.
При использовании этого подхода возникает проблема, связанная с ненаправленной антенной, у которой диаграмма направленности похожа на пончик. Этот паттерн позволяет прекрасно принимать сигнал от близлежащей сети практически в любом направлении, но не позволяет найти точное направление, откуда исходит этот сигнал.
Альтернативный вариант: использование антенны с узкой диаграммой направленности, например, Яги, панельную или в виде параболической решетки. В отличие от диаграммы в виде пончика, направленная антенна получает более сильный сигнал при наведении на цель.
Использование Wireshark для отслеживания сигналов
Когда встает задача визуализации мощности сигнала в наглядной форме с целью отслеживания подозрительных устройств, Wireshark приходится очень кстати, поскольку умеет отображать силу передаваемого сигнала от всех близлежащих Wi-Fi девайсов, которые мы укажем.
Хотя эта функция не очень хорошо задокументирована, процесс идентификации целевого устройства и отображение мощности сигнала в графическом виде на удивление прост. В связке с сетевым адаптером в режиме мониторинга и Wi-Fi антенной с узкой диаграммой направленности Wireshark сможет быстро обнаружить местонахождение любого Wi-Fi устройства, находящегося в доступном радиусе обзора.
Процесс поиска сигналов в Wireshark организован примерно следующим образом. Сначала мы переводим сетевой адаптер в режим мониторинга (monitor mode) и начинаем сканировать цели при помощи airodump–ng с целью обнаружения канала, в котором находится искомое устройство. Как только соответствующий канал, откуда вещает наша цель, обнаружен, можно переходить к сканированию конкретного канала для получения пакетов и отображения полученной информации в графическом виде.
После закрепления в нужном канале мы можем открыть Wireshark, найти пакеты от устройства, которое хотим отслеживать, а затем создать экранный фильтр, чтобы отображались только пакеты, передаваемые от нужного девайса. В завершении процесса мы при помощи графика, на котором отображена мощность сигнала в зависимости от времени, во время перемещения направленной антенны, пытаемся найти всплески.
Что понадобится
Чтобы следовать данному руководству вам потребуется компьютер, на котором можно запустить Wireshark и перевести сетевой адаптер в режим мониторинга, что доступно в любой системе на базе дистрибутива Kali / Debian или на виртуальной машине в macOS или Windows.
Также вам понадобится внешний сетевой Wi-Fi адаптер с поддержкой режима мониторинга. Я рекомендую модель навроде AWUS036NEH. Если вы ищете что-то более надежное, то модель Alfa Tube-UN защищена от влаги и предназначена для использования на улице. Наконец, вам понадобится направленная Wi-Fi антенна, как, например, панельная антенна. Также подойдет антенна Яги, параболическая решетка или антенна-банка, если вы хотите смастерить собственную направленную антенну.
Шаг 1. Переключение карты в режим мониторинга
Для начала подключите беспроводной сетевой адаптер к вашей системе с Kali или Debian, а затем при помощи команды ifconfig выясните имя карты. Должно быть имя вроде «wlan1». Если не отображается, запустите команду ip a, чтобы убедить, что нужный интерфейс поднят.
Если ваша карта отображается при запуске команды ip a, но не отображается при запуске команды ifconfig, выполните команду ifconfig wlan1 up. Теперь карта должна отображаться и при запуске команды ifconfig.
Теперь переведите карту в режим мониторинга при помощи команды ниже. Предполагается, что имя вашего адаптера – «wlan1», и интерфейс поднят.
~# airmon-ng start wlan1 Found 3 processes that could cause trouble. Kill them using 'airmon-ng check kill' before putting the card in monitor mode, they will interfere by changing channels and sometimes putting the interface back in managed mode PID Name 538 NetworkManager 608 wpa_supplicant 2446 dhclient PHY Interface Driver Chipset phy0 wlan0 ath9k Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01) phy4 wlan1 rt2800usb Ralink Technology, Corp. RT5372 (mac80211 monitor mode vif enabled for [phy4]wlan1 on [phy4]wlan1mon) (mac80211 station mode vif disabled for [phy4]wlan1)
После переключения в режим мониторинга имя вашей карты должно поменяться на «wlan1mon». При помощи беспроводного сетевого адаптера в режиме мониторинга мы можем начать прослушивание Wi-Fi трафика, запустив следующую команду:
~# airodump-ng wlan1mon
Шаг 2. Идентификация цели и широковещательного канала
В предыдущем шаге мы начали прослушивать трафика при помощи следующей команды:
~# airodump-ng wlan1mon
Теперь мы должны увидеть список близлежащих сетей, каждая из которых является нашей потенциальной целью:
CH 10 ][ Elapsed: 0 s ][ 2019-08-04 03:33 BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID CC:40:D0:6C:73:D1 -40 2 0 0 8 195 WPA2 CCMP PSK SuicideGirls C0:8A:DE:B9:CD:D8 -50 2 0 0 1 130 OPN SpectrumWiFi C0:8A:DE:79:CD:D8 -50 2 0 0 1 130 WPA2 CCMP MGT SpectrumWiFi Plus C0:8A:DE:39:CD:D8 -49 2 0 0 1 130 OPN CableWiFi 00:9C:02:D2:5E:B9 -65 2 0 0 1 54e. WPA2 CCMP PSK HP-Print-B9-Officejet Pro 8600 88:96:4E:50:FF:40 -45 3 0 0 1 195 WPA2 CCMP PSK ATTMfRfcmS 78:96:84:00:B5:B0 -48 2 0 0 1 130 WPA2 CCMP PSK The Daily Planet BSSID STATION PWR Rate Lost Frames Probe C0:8A:DE:79:CD:D8 4A:F3:2A:2A:4E:E6 -68 0 - 1 0 2
Нажмите Ctrl-C для остановки перехвата, когда целевая сеть будет найдена. Теперь нужно определить канал, где находится сеть, которую мы хотим отслеживать. В логе выше показано несколько сетей. Предположим, что мы хотим отслеживать сеть с SSID «ATTMfRfcmS».
Если мы хотим получить приблизительное представление, где ранее была видна сеть, то можно ввести BSSID на сайте Wigle.net и посмотреть результаты предыдущих наблюдений. Из рисунка ниже видно, что наша цель наблюдалась дважды.
Рисунок 1: Местонахождение целевой беспроводной сети
Самая важная информация, получаемая после запуска airodump-ng, – номер канала, в котором передает наша цель. Теперь мы знаем, что вещание происходит в канале 1. Перезапускаем airodump-ng с целью сканирования только этого канала.
Шаг 3. Прослушивание конкретного канала и запуск Wireshark
В терминале вновь запускаем команду airodump-ng, но в этот раз добавляем флаг –c с номером целевого канала. В случае с каналом 1 команда будет выглядеть так:
# airodump-ng wlan1mon -c 1
Указать канал чрезвычайно важно, поскольку Wireshark не умеет управлять беспроводной картой самостоятельно, и нам нужно запустить airodump-ng с целью подключения к корректному каналу и избежания потери пакетов во время сканирования не того канала.
Как только airodump-ng начал работать в конкретном канале (в нашем случае в канале 1), настало время запустить Wireshark. После открытия Wireshark выберите карту «wlan1mon», находящуюся в режиме мониторинга, в качестве источника перехвата, а затем кликните на иконку с синим акульим плавником в левом верхнем углу экрана с целью начала перехвата пакетов на канале 1.
Рисунок 2: Выбор карты для перехвата пакетов
Теперь вы должны увидеть множество пакетов, перехватываемых Wireshark! Следующая задача – найти пакет от целевого устройства, который будет использоваться для создания экранного фильтра.
Шаг 4. Обнаружение цели и создание экранного фильтра
Когда у нас появился набор пакетов, можно поискать сигнальные кадры (beacon frame) с именем целевой сети. После клика на кадре, кликните на стрелку рядом с надписью «IEEE 802.11» и обратите внимание на поля «Transmitter address» или «Source address», на основе которых мы будем создавать экранный с целью отслеживания только целевого устройства.
Рисунок 3: Содержимое одного из сигнальных кадров целевой сети
Кликните правой кнопкой мыши на поле «Transmitter address», выберите «Apply as filter», а затем «Selected» для создания экранного фильтра, который будет показывать только пакеты, передаваемые от устройства с указанным BSSID. Будут показаны все передаваемые пакеты из интересующей нас сети.
Рисунок 4: Создание экранного фильтра
На панели фильтров должен появиться новый фильтр, выглядящий примерно так «wlan.ta ==» с BSSID целевого беспроводного устройство. Логика этого фильтра простая: «показать только пакеты с адресом передачи, совпадающим с указанным».
В результате мы изолировали устройство по двум параметрам: во-первых, нашли канал, в котором вещает этот девайс, а затем создали фильтр с адресом передачи от отслеживаемого нами устройства. После изоляции можно переходить к отображению мощности сигнала в виде графика.
Шаг 5. Графическое отображение мощности отфильтрованного сигнала
Чтобы отобразить мощность сигнала в виде графика, скопируйте созданный экранный фильтр, кликните на «Statistics», а затем «I/O Graph» для открытия окна с графиком. Кликните на иконку с плюсом (+) с целью создания нового графика и снимите флажок со всех остальных графиков, которые могут быть включены.
Укажите имя графика (нечто легко запоминаемое), и затем вставьте скопированный ранее экранный фильтр в поле Display Filter. Далее вставьте wlan_radio.signal_dbm в поле Y Field и выберите «AVG(Y Field)» в качестве оси Y (Y Axis). Наконец, установите стиль (Style) «Line» и в поле SMA Period укажите «10 Interval SMA».
После всех настроек график должен выглядеть, как показано на рисунке ниже, и мощность сигнала должна начать отображаться.
Рисунок 5: График мощности сигнала с отслеживаемого устройства
Этот график изображает среднюю мощность сигнала, исходящего от целевого устройства, в зависимости от времени. Пока не перемещайте направленную антенну и дайте графику отрисоваться в течение некоторого времени, чтобы понять усредненный уровень. Сначала может показаться, что сигнал сильно меняется, поскольку Wireshark фиксирует даже небольшие изменения, однако этот график будет более полезным, когда мы начнем ходить внутри помещения и встречать более сильные и более слабые сигналы, которые будут растягивать средние значения графика.
Шаг 6. Перемещение антенны для поиска пиков сигнала
Настал момент истины. Медленно поворачивайте направленную антенну на 360 градусов и смотрите за пиками мощности сигнала, которые помогают определить направление, откуда идет передача.
На графике ниже показан большой всплеск, появившийся в процессе медленного поворачивания панельной антенны после совмещения с направлением источника сигнала.
Рисунок 6: Всплеск мощности сигнала после совмещения направленной антенны с источником
После поворота туда-обратно несколько раз вы должны увидеть пики сигнала. Проследуйте в направлении, где был обнаружен всплеск и еще раз поверните антенну, чтобы сузить предположительное местонахождение источника передачи.
Заключение
Всякий раз, когда сеть Wi-Fi появляется в неположенном месте, или устройство начинает подключаться к вашей беспроводной сети без разрешения, Wireshark и сетевой адаптер могут помочь в обнаружении источника сигнала. Эта методика позволяет относительно легко обнаружить вредоносную скрытую точку доступа или деятеля, пытающегося подключиться к вашей беспроводной сети без разрешения. Если, например, вы подозреваете соседа в подключении к вашей Wi-Fi сети и не можете удостовериться в своих догадках, приведенная техника может помочь в сборе доказательств.
Надеюсь, это руководство, посвященное отслеживанию Wi-Fi устройство
при помощи Wireshark, вам понравилось.
Если вы думаете, что кто-то использует ваш Wi-Fi без разрешения, вам, вероятно, нужно действовать. О безопасности Wi-Fi Ваш – тяжело для любого Кто-то взломал сеть Вполне безопасно. Чтобы подтвердить свои подозрения, вам нужно проверить свою сеть и посмотреть, что там происходит, в поисках устройств, мешающих вашей пропускной способности.
Лучший способ сделать это обычно – получить доступ к панели администратора вашего роутера. Если у вас нет доступа к веб-интерфейсу маршрутизатора, возможно, из-за того, что вы сканируете общедоступную сеть или, возможно, небрежно проверяете Airbnb на наличие скрытых камер (не гарантия, потому что умный шпион поместит их в скрытую сеть или использует вашу память card), лучше всего иметь программу или приложение, которое сканирует сеть для вас.
Проверьте веб-интерфейс управления маршрутизатором.
Чтобы получить более подробную информацию об устройствах в вашей сети, вам нужно будет зайти в веб-интерфейс маршрутизатора – то же самое место, где вы можете изменить свое сетевое имя и пароль и выполнить другие административные задачи. Обычно это можно сделать, набрав адрес (обычно 192.168.0.1, 192.168.1.1, 192.168.2.1 или 192.168.1.100) в строке браузера. Вы должны изучить марку своего маршрутизатора или посмотреть на устройство, поскольку оно обычно помогает понять, какое из них выбрать.
Затем вам нужно будет войти в маршрутизатор, используя информацию по умолчанию, напечатанную на устройстве, или то, на что вы ее изменили. (Процесс изменения – умный ход, потому что большинство маршрутизаторов поставляются с настройками по умолчанию, такими как «admin» и «password».)
Войдя внутрь, поищите опцию «Подключенные устройства», «ЛВС», «Беспроводная локальная сеть» или что-нибудь, что может дать вам информацию о вашей сети. Это зависит от производителя маршрутизатора. Журналы также могут быть скрыты за кнопкой или меню, которое показывает вам информацию о DHCP-клиентах.
Вы узнаете, что нашли нужное место, когда увидите список подключенных в данный момент устройств, который может дать вам возможность увидеть Журналы предыдущей активности также. Вы всегда будете видеть MAC-адрес, и в зависимости от производителя вашего маршрутизатора вы также можете увидеть IP-адрес, имя устройства или другую информацию. Если вы знаете MAC-адреса каждого устройства, которое должно быть подключено к вашей сети, вы можете просто сравнить список с журналами маршрутизатора (если они доступны), чтобы увидеть, что происходит.
Более простой вариант: использовать инструмент сетевого сканирования
Если подключение к маршрутизатору и сравнение MAC-адресов – не ваша чашка чая, существует множество программ, которые могут вам помочь. Контролируйте свою сеть. Он обычно не показывает вам подробные журналы, как ваш маршрутизатор (если вы не настроите его на автоматическое сканирование и сбор данных каждые несколько минут), но он может сказать вам, что происходит в вашей сети в любой момент времени, а некоторые могут это сделать. гораздо больше, чем это. Обычно они предоставляют вам информацию о производителе устройства, позволяя легко узнать, что вы смотрите, поскольку большинство из них очень просты в использовании – просто загрузите инструмент, запустите его и запустите процесс. Проверка сети.
Nirsoft Wireless Network Watcher (Windows)
эта программа Просто, бесплатно и эффективно. вставать проверьте свою сеть , сообщает вам адреса и сведения о подключенных устройствах и отслеживает, как часто он обнаруживает эти устройства, позволяя отслеживать подозрительные действия с помощью регулярного сканирования.
Кто есть в моем WiFI / WhoFi (Mac / Windows / Android)
Разработано эта программа Для использования с пакетом крупномасштабного сетевого анализа и оптимизации, его также можно использовать бесплатно в качестве личного инструмента сканирования сети. Он должен показать вам самую важную информацию об устройствах в вашей сети и даже позволить вам настроить его на Автоматическое сканирование вашей сети через определенные промежутки времени и собирать данные об устройствах на нем.
Расширенный IP-сканер (Windows)
Говорит тебе Расширенный IP-сканер Со всеми основами О том, кто в вашей сети В этом нет ничего нового, но это очень полезно, если вы ищете инструменты, которые помогут вам получить доступ к устройствам в вашей локальной сети и управлять ими удаленно.
Финг (Android/iOS)
Если вам нужен красивый и плавный мобильный опыт, это сложно превзойти Fing. Он дает быстрые и видимые результаты и предлагает некоторые Инструменты анализа, если вам интересно – Отличный способ сделать Быстрое сканирование сети.
Злой IP-сканер (Windows/Mac/Linux)
Несмотря на название, использование эта программа Это вряд ли вас сильно рассердит, если вы продвинутый пользователь. Интерфейс немного менее понятен для людей, которые, возможно, не знакомы с сетью, но он предлагает много расширенные функции Если это то, что вам нужно.
Использование командной строки (Windows)
Другой способ проверить устройства, которые в настоящее время находятся в вашей сети, – это использовать командную строку, хотя этот метод менее очевиден и не дает много информации. Просто откройте командную строку и введите arp -a. Это отобразит список IP- и MAC-адресов. Чтобы увидеть имена связанных устройств айпи адрес , записывать пинг -a.
Использование Nmap или Nutty (Linux)
Если вы пользователь Linux, вы можете использовать популярный инструмент сетевого анализа. Nmap Чтобы определить Устройства в вашей сети , следуя инструкциям на главном веб-сайте инструмента. В качестве альтернативы вы можете попробовать увлекающийся , в настоящее время доступно в операционной системе Элементарная ОС и Ubuntu.
Почему меня это волнует?
Если вы не пытаетесь оптимизировать большую сеть и управлять ею, вам может не понадобиться делать это на регулярной основе. Однако это быстро и легко, если вы обеспокоены своей сетью или подозреваете несанкционированное использование и хотите найти устройства, которые мешают вашей пропускной способности. Это может помочь, если вы хотите знать, какие устройства вызывают проблемы. Это также может быть связано с тем, что вы ленивы и хотите знать MAC-адреса всех устройств в комнате, не вставая и не проверяя. Работайте умнее, а не усерднее, правда? В худшем случае, если вы найдете кого-то, кто использует вашу сеть, пора читать дальше Безопасность Wi-Fi.
Как узнать, кто подключен к вашему роутеру? Подключение новых устройств к вашему роутеру — это обычное явление, но иногда возникают ситуации, когда вы хотите узнать, кто подключен к вашему роутеру, сколько устройств используют сеть и контролировать доступ к интернету. В этой статье мы расскажем, как проверить список подключенных устройств к вашему роутеру, используя различные методы.
Содержание
- Используйте интерфейс веб-страницы роутера
- Используйте специальные программы для сканирования сети
- Используйте мобильные приложения
- Используйте командную строку
- Используйте приложение для мониторинга сети
Используйте интерфейс веб-страницы роутера
Шаг 1. Откройте любой браузер и введите IP-адрес вашего роутера в адресной строке. Обычно это 192.168.1.1 или 192.168.0.1.
Шаг 2. Введите имя пользователя и пароль, чтобы войти в панель управления.
Шаг 3. Найдите раздел «Список подключенных устройств», «Устройства в сети» или подобное наименование. В этом разделе вы сможете увидеть список всех подключенных устройств.
Используйте специальные программы для сканирования сети
Шаг 1. Скачайте и установите любую программу для сканирования сети, например, Fing или Advanced IP Scanner.
Шаг 2. Запустите программу и нажмите «Сканировать сеть».
Шаг 3. После завершения сканирования вы увидите список всех устройств, подключенных к вашей сети.
Используйте мобильные приложения
Шаг 1. Скачайте и установите любое мобильное приложение для сканирования сети, например, Fing или Netgear Nighthawk.
Шаг 2. Запустите приложение и нажмите «Сканировать сеть».
Шаг 3. После завершения сканирования вы увидите список всех устройств, подключенных к вашей сети.
Используйте командную строку
Шаг 1. Откройте командную строку на вашем компьютере.
Шаг 2. Введите команду «ipconfig» (для Windows) или «ifconfig» (для Mac и Linux).
Шаг 3. Найдите раздел «Default Gateway» и введите IP-адрес вашего роутера в браузере.
Шаг 4. Введите имя пользователя и пароль, чтобы войти в панель управления.
Шаг 5. Найдите раздел «Список подключенных устройств», «Устройства в сети» или подобное наименование. В этом разделе вы сможете увидеть список всех подключенных устройств.
Используйте приложение для мониторинга сети
Шаг 1. Скачайте и установите любое приложение для мониторинга сети, например, GlassWire или Netgear Genie.
Шаг 2. Запустите приложение и найдите раздел «Список подключенных устройств».
Шаг 3. После завершения сканирования вы увидите список всех устройств, подключенных к вашей сети.
В заключение хотелось бы отметить, что проверка списка подключенных устройств к вашему роутеру — это важная задача, которая поможет вам контролировать доступ к интернету и обеспечивать безопасность вашей сети. Мы надеемся, что данная статья помогла вам разобраться в этом вопросе и выбрать наиболее удобный и эффективный способ проверки списка подключенных устройств.
Допустим; Интернет стал частью нашей жизни. В наши дни мы не можем выжить без подключения к Интернету. Увеличение использования Интернета на smartphones также привело к появлению сетей Wi-Fi. В наши дни вы найдете сети Wi-Fi повсюду, например, в офисах, кинотеатрах, торговых центрах и т. Д.
Даже у всех нас есть подключение к Wi-Fi дома и на рабочем месте. Если у вас есть личный Wi-Fi, то мы уверены, что вы имели дело с медленной скоростью интернета. Внезапное снижение скорости интернета указывает на то, что кто-то может использовать вашу сеть Wi-Fi. Большинство современных маршрутизаторов позволяют пользователям проверять наличие подключенных устройств. Однако, если вы не знаете, как использовать панель администратора маршрутизатора, вы можете положиться на приложения.
В Play Store было довольно много приложений для Android, которые позволяют находить устройства, подключенные к сети Wi-Fi. В этой статье мы поделимся несколькими лучшими методами, которые помогут вам найти устройства, подключенные к вашей Wi-Fi, с помощью смартфона.
1. Использование Fing – Сетевые инструменты
Для тех, кто не знает, Fing – это полноценный сетевой инструмент, доступный для Android. С помощью FING вы можете анализировать любую сеть Wi-Fi. Не только это, но и приложение также поможет вам найти устройства, подключенные к Wi-Fi.
Шаг 1. Прежде всего, на вашем Android-устройстве загрузите и установите приложение. Fing – Сетевые инструменты. После установки приложения запустите его на своем Android-устройстве.
Установите инструменты Fing Network
Шаг 2. Теперь просто сканировать все устройства которые в настоящее время подключены к той же сети Wi-Fi.
Fing – Сетевые инструменты
Шаг 3. Теперь будет отображаться список устройств, которые в настоящее время используют одну и ту же сеть Wi-Fi.
Список устройств
Шаг 4. Вы можете узнать подробности о подключенных WiFi-устройствах, нажав на них
Подробная информация о подключенных устройствах
Вот и все! Все готово, теперь вы можете проверить Mac-адрес устройства и заблокировать его на своем маршрутизаторе.
Использование Wifi Inspector
Это еще одно приложение, которое работает так же, как Fing. Wifi Inspector – это простой инструмент для просмотра всех устройств, подключенных к сети (как проводных, так и Wi-Fi, будь то консоли, телевизоры, компьютеры, планшеты, телефоны и т. Д.), Которые предоставляют соответствующие данные, такие как IP-адрес, производитель, имя устройства и MacAddress. .
Шаг 1. Прежде всего, загрузите и установите приложение WiFi Inspector на свое устройство Android и запустите его.
Шаг 2. Теперь он покажет вам сеть. Просто нажмите на «Проверить сеть» продолжить.
Нажмите на «Проверить сеть»
Шаг 3. Теперь он просканирует устройства, подключенные к вашей сети Wi-Fi.
Инспектор Wi-Fi
Шаг 4. Теперь он покажет вам весь список устройств, подключенных к вашей сети Wi-Fi.
Список устройств, подключенных к сети
Вот и все! Все готово, теперь вы можете заблокировать устройства, выполнив настройки маршрутизатора.
Использование NetScan
NetScan – еще один инструмент сетевого сканирования, доступный на Google Play Store. Самое замечательное в NetScan заключается в том, что он может обнаруживать подключенные устройства, сканируя порт. Не только это, NetScan также может помочь вам найти лазейки, уязвимости и открытые порты в сети.
Шаг 1. Прежде всего, посетите Google Play Store и загрузите NetScan. Вы можете использовать эту ссылку, чтобы загрузить и установить приложение напрямую.
Установить Net Scan
Шаг 2. После этого откройте приложение и предоставить все разрешения.
Шаг 3. Теперь вы увидите интерфейс, как показано ниже. Здесь нужно нажать на ‘Сканирование портов’
Нажмите на «Сканирование портов».
Шаг 4. Теперь NetScan просканирует подключенные устройства и выведет их список.
Список устройств
Шаг 5. Если вы хотите получить подробную информацию о подключенном устройстве, просто нажмите на него, чтобы получить краткий обзор.
Вот и все, готово! Вот как вы можете использовать NetScan для поиска устройств, подключенных к вашему Wi-Fi на Android.
2. Сканирование подключенных устройств на iPhone
Fing – Сетевые инструменты для iOS
Шаг 1. Прежде всего, загрузите и установите приложение на свое устройство iOS. Fing – Сетевые инструменты. После установки приложения запустите его на своем iPhone.
Шаг 2. Теперь просто просканируйте все устройства, которые в настоящее время подключены к одной и той же сети Wi-Fi.
Шаг 3. Теперь будет отображаться список устройств, которые в настоящее время используют одну и ту же сеть Wi-Fi.
Вот и все! Все готово, теперь вы можете проверить Mac-адрес устройства и заблокировать его на своем маршрутизаторе.
Некоторые другие приложения, которые вы можете использовать
Как и вышеперечисленные приложения, существуют и другие приложения для той же цели. Ниже мы поделились тремя лучшими приложениями для сканирования устройств, подключенных к сети Wi-Fi.
1. Кто у меня вайфай
Кто на моем Wi-Fi
Как следует из названия приложения, Who is on my WiFi – одно из лучших приложений для сканирования WiFi, доступных в Play Store. Приложение было в основном известно своим привлекательным пользовательским интерфейсом. Приложение эффективно сканирует и находит устройства, подключенные к сети Wi-Fi.
2. Сканер и анализатор WiFi
Сканер и анализатор WiFi
Как следует из названия приложения, WiFi Scanner & Analyzer – еще одно лучшее и самое популярное приложение для сканирования WiFi в списке. Приложение служит удобным способом составить список всех устройств, подключенных к персональной точке доступа Wi-Fi. Кроме того, у него также есть инструмент для проверки скорости сети, который точно измеряет скорость вашей сети.
3. WiFi Warden
WiFi Warden
Это еще одно лучшее приложение для сканирования Wi-Fi в списке, которое можно использовать для анализа сети Wi-Fi. Приложение для Android сообщает вам об уровне сигнала Wi-Fi вокруг вас. Не только это, но также говорится об устройствах, которые были подключены к сети Wi-Fi.
Итак, это одни из лучших приложений для сканирования Wi-Fi, доступных в Play Store. Вы можете использовать эти приложения для поиска устройств, подключенных к сети Wi-Fi.
Итак, выше все о том, как проверить устройства, подключенные к вашему Wi-Fi, с помощью вашего смартфона. Надеюсь, вам это понравится, поделитесь этим и с другими. Оставьте комментарий ниже, если у вас есть вопросы, связанные с этим.