• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Возможно ли словить хэндшейк на esp

JoNi

New member
Вопрос к знатокам
У меня есть esp-12f , его функционал огроменн, вот я и задумался... возможно ли словить хэндшейк с его помощью? + поддерживает ли он рассоциацию узлов?(отключение клиентов взламываемой сети)
Ведь к нему же можно подключить microsd флешку для сохранения перехваченных хэндшейков(даже без выбора определенной сети, просто все что словил сохранил)
Мне кажется идея ничего
 

Victor

Administrator
Команда форума
Да, все это можно на одном канале. MGMT пакеты практически все парсятся. И фейковые точки доступа можно поднимать (сразу несколько на разных каналах).
 

JoNi

New member
Т.е. ловить пакеты можно только на одном канале?
MGMT пакет это хэндшейк?
А зачем фейковые AP?
По сути мне нужен скетч/прошивка в котором я введу канал нужной AP и после включения esp-ешка будет мониторить этот канал(+по возможности отключать клиентов) ловить хэндшейк и записывать их на sd карту.
Если есть пример подобного, скиньте пожалуйста)
 

pvvx

Активный участник сообщества
Т.е. ловить пакеты можно только на одном канале?
MGMT пакет это хэндшейк?
А зачем фейковые AP?
По сути мне нужен скетч/прошивка в котором я введу канал нужной AP и после включения esp-ешка будет мониторить этот канал(+по возможности отключать клиентов) ловить хэндшейк и записывать их на sd карту.
Если есть пример подобного, скиньте пожалуйста)
ESP не имеет средств включений всяких отладочных режимов для драйвера WiFi. Исходники либ и закрыты от таких :) Придется вам копаться в бинарниках зарытых либ и лепить патчи.
В RTL модулях есть отладочные режимы... iwpriv mp_start ... :)
 

Victor

Administrator
Команда форума
Т.е. ловить пакеты можно только на одном канале?
по каналам можно прыгать, но в один момент времени только один канал можно слушать
MGMT пакет это хэндшейк?
почитайте описание стандарта 802.11 - хэндшейк это обмен разными типами management пакетов
А зачем фейковые AP?
А зачем вам сниффер?
По сути мне нужен скетч/прошивка в котором я введу канал нужной AP и после включения esp-ешка будет мониторить этот канал (+по возможности отключать клиентов) ловить хэндшейк и записывать их на sd карту.
Если есть пример подобного, скиньте пожалуйста)
Именно такой пример (с SD) вы вряд ли найдете, но это вполне реализуемо, если делать правильно.
Примеров сниффера - сотни, но большинство сделаны по-быстрому и записать на SD этот громадный поток вряд ли получится (нельзя выполнять длительные операции в callback функции). Ищите в примерах парсинг заголовков 802.11 пакетов, фильтруйте нужные.
 

pvvx

Активный участник сообщества
А зачем вам сниффер?
Там необходимо записать поток после вызванного хэндшейка. Что-то из этой области Атака на беспроводные сети. Чуть меньше теории и чуть больше практики Захват рукопожатий (handshake) в Kali Linux - HackWare.ru Как поймать хендшейк - Мои статьи - Каталог статей - wpa2
Всё это работает только на простых обывателях использующих WiFi и смысла не имеет.
От провайдера сразу получит по голове и на этом всё закончится :)
 

JoNi

New member
Так я провайдера взламывать и не собираюсь)
Так пример реализации подобного на esp есть кого нибудь?
 

pvvx

Активный участник сообщества
Там ещё не научились задавать маски на приемные MAC для драйвера (аппаратная часть). И чип вроде не поддерживает 150 Mб/с, а это ныне стандарт.

Думаю надо подумать о желающих укоротить свою активную жизнь (очистить общество от своего присутствия :)) и сделать какой “снифер”, но не на ESP8266. Может на ESP32 или RTL871x для Arduino :)
 
Последнее редактирование:

Victor

Administrator
Команда форума
Там ещё не научились задавать маски на приемные MAC для драйвера (аппаратная часть). И чип вроде не поддерживает 150 Mб/с, а это ныне стандарт.
Да, масок нет, но можно фильтровать MAC адреса внутри callback функции (проверено, проц справляется).
Хэндшейк проходит на низкой скорости, 150 - это уже при обмене реальными данными, а нам они не нужны.
Я пробовал сам - успешно и без пропусков ловятся все managment пакеты: AUTH, Association Request/Response, BEACON, Probe и т.п.
Можно мониторить всех клиентов на подключение/отключение и прочее. Можно даже (c невысокой точностью) осуществлять геолокацию WiFi маяк - решение проблем indoor геолокации – esp8266

Update

Фильтр по MAC адресу есть, но я его не использовал, т.к. iOS ставит случайный MAC в probe req пакет.
[inline]3.11.2. wifi_promiscuous_set_mac[/inline]
 
Последнее редактирование:

pvvx

Активный участник сообщества
Я пробовал сам - успешно и без пропусков ловятся все managment пакеты: AUTH, Association Request/Response, BEACON, Probe и т.п.
Мне кажется, что будут проблемы с выводом данных из чипа на ESP8266. У него низкая производительность при приеме и передаче во вне из-за потерь на обработку подготовки DMA буферов к SPI и обслуживанию их. Писать на ASM нерентабельно...

14 штук модулей и сканер на все каналы?
 
Последнее редактирование:

JoNi

New member
Всем спасибо, я понял что это мозахизм)
Тему можно закрывать.
 

pvvx

Активный участник сообщества
Всем спасибо, я понял что это мозахизм)
Тему можно закрывать.
Ну не совсем. Всему и всегда можно найти мирное применение. Но на счет сканера/сниффера на ESP8266 - это точно мазохизм, т.к. они есть на множестве USB-WiFi и всё к ним уже написано.
 

pvvx

Активный участник сообщества
ага, передача по UART на RPI через USB HUB - в такой связке пробовали - "дешево и сердито" (mgmt трафик небольшой, успевало все на 115200)
В ROM-BIOS вроде уже есть интерфейс SDIO - делать ничего не требуется, только исправить ошибки...
 

Victor

Administrator
Команда форума
В ROM-BIOS вроде уже есть интерфейс SDIO - делать ничего не требуется, только исправить ошибки...
да и SD без проблем работает, можно сделать. Только имеет смысл писать на SD, если устройство автономное, но автономное устройство требует 70ma в режиме сниффера, так что смысла действительно нет. А с внешним питанием можно сразу передавать куда надо, например две esp8266 - на одной сниффер, а другая передает фильтрованные данные по WiFi в облако.
 

pvvx

Активный участник сообщества
да и SD без проблем работает, можно сделать.
Я про SDIO WiFi/WLAN. Интерфейс такой. Все пакеты в формате SDIO.
К примеру: 1 ШТ. RTL8723BS Интерфейс SDIO WI FI BT Беспроводная Связь Bluetooth WIFI Беспроводной Модуль купить на AliExpress

RTL8711AM AT : [ATWM]Usage: ATWM=DURATION_SECONDS[with_len]
Код:
# ATWM=1
[ATWM]: _AT_WLAN_PROMISC_
Switch to channel(1)
TYPE: 0x48, DA: cc 5d 4e fb ac 4c, SA: 9e de d0 c6 e4 b8, len=24, RSSI=-95
TYPE: 0x48, DA: cc 5d 4e fb ac 4c, SA: 9a de d0 08 c4 12, len=24, RSSI=-95
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-38
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 1a fe 34 99 ad 1d, len=133, RSSI=-26
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-67
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 1c 44 19 04 e6 18, len=304, RSSI=-93
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 98 de d0 c6 e4 b8, len=254, RSSI=-95
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-38
TYPE: 0x48, DA: 1a fe 34 99 ad 1d, SA: 00 0f 54 10 6a b5, len=24, RSSI=-40
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-69
TYPE: 0x40, DA: ff ff ff ff ff ff, SA: 00 0f 54 10 6a b5, len=42, RSSI=-48
TYPE: 0x50, DA: 00 0f 54 10 6a b5, SA: 1a fe 34 99 ad 1d, len=75, RSSI=-26
TYPE: 0x50, DA: 00 0f 54 10 6a b5, SA: bc ae c5 eb 09 90, len=219, RSSI=-36

Switch to channel(2)
TYPE: 0x50, DA: 00 0f 54 10 6a b5, SA: bc ae c5 eb 09 90, len=219, RSSI=-38
TYPE: 0x50, DA: 00 0f 54 10 6a b5, SA: bc ae c5 eb 09 90, len=219, RSSI=-38
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: c4 a8 1d d7 a7 c9, len=277, RSSI=-91
TYPE: 0x48, DA: cc 5d 4e fb ac 4c, SA: 9e de d0 c6 e4 b8, len=24, RSSI=-93
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-38
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 1a fe 34 99 ad 1d, len=133, RSSI=-26
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 9e d2 1e b2 02 95, len=271, RSSI=-86
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 1a fe 34 99 ad 1d, len=133, RSSI=-28
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 9e d2 1e b2 02 95, len=271, RSSI=-84
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 1a fe 34 99 ad 1d, len=133, RSSI=-28

Switch to channel(3)
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-73
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: c4 a8 1d d7 a7 c9, len=277, RSSI=-93
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-40
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 9e d2 1e b2 02 95, len=271, RSSI=-84
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-48
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-75
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-50

Switch to channel(4)
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 1a fe 34 99 ad 1d, len=133, RSSI=-34
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-75
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-75
TYPE: 0xd0, DA: 18 fe 34 99 ad 1d, SA: bc ae c5 eb 09 90, len=33, RSSI=-46
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-85
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-79
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 26 ff 3f 56 f3 bf, len=249, RSSI=-81

Switch to channel(5)
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-87
TYPE: 0x40, DA: ff ff ff ff ff ff, SA: 00 0f 54 10 6a b5, len=42, RSSI=-52
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-87
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-87
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-87

Switch to channel(6)
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-87
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-83
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-89
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-83
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-87

Switch to channel(7)
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-77
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-80
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-83
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-80

Switch to channel(8)
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-80
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 1a fe 34 99 ad 1d, len=133, RSSI=-85
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81

Switch to channel(9)
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: f8 32 e4 44 ce c0, len=234, RSSI=-87
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-80
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-77

Switch to channel(10)
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-80

Switch to channel(11)
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-81
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81

Switch to channel(12)
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-80
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-80

Switch to channel(13)
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
.... часть удалена, т.к. не лезет в сообщение
TYPE: 0x8, DA: 8c 8e f2 13 e8 23, SA: 00 26 5a 50 c0 6e, len=1498, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: bc ae c5 eb 09 90, len=245, RSSI=-81
TYPE: 0x80, DA: ff ff ff ff ff ff, SA: 00 26 5a 50 c0 6e, len=108, RSSI=-81
[MEM] After do cmd, available heap 2194592+21992
Так-же в API есть все функции для фильтров:
void wifi_init_packet_filter(void);
int wifi_add_packet_filter(unsigned char filter_id, rtw_packet_filter_pattern_t *patt, rtw_packet_filter_rule_e rule);
int wifi_enable_packet_filter(unsigned char filter_id);
int wifi_disable_packet_filter(unsigned char filter_id);
int wifi_remove_packet_filter(unsigned char filter_id);
и т.д.
В общем на RTL надо описать только класс на Arduino. Всё остальное есть, как и работа SD в FAT.

PS: за время экспа умудрился переполнить 2 мегабайта памяти модуля за 3 секунды приема... UART не успевает выводить заголовки пакетов... Куда такой поток сливать? :)
 
Последнее редактирование:
Сверху Снизу