Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Лабораторная работа №2: Разбор Beacon-кадра IEEE 802.11 и Information Elements ...

Дата публикации: 19-08-2026 18:14:31

Лабораторная работа №2: Разбор Beacon-кадра IEEE 802.11 и Information Elements на байтовом уровне (редакция 2, исправленная)
Цель работы
Изучить внутреннюю структуру кадра Beacon стандарта IEEE 802.11, научиться вручную декодировать заголовок кадра и Information Elements (IE) из сырых байтов, а также сопоставлять результаты ручного анализа с автоматической интерпретацией в Wireshark.
Оборудование и программное обеспечение
· Компьютер с Kali Linux (или совместимым дистрибутивом)
· Внешний Wi-Fi адаптер AIC8800 с поддержкой режима монитора (с включённым CONFIG_RWNX_MON_DATA)
· Программные средства:
· aircrack-ng (для захвата)
· tcpdump
· Wireshark
· Python 3 с библиотекой scapy (или pyshark, но в задании используется scapy)
· xxd или hexdump для просмотра байтов
Примечание: Для установки scapy выполните:
```bash
sudo apt update && sudo apt install python3-scapy
```
Теоретические сведения
1. Общая структура кадра 802.11
Кадр 802.11 состоит из заголовка MAC, тела кадра (frame body) и FCS (Frame Check Sequence, обычно не захватывается в pcap). При захвате в режиме монитора перед кадром добавляется заголовок Radiotap, содержащий радио-метаданные.
Общая схема (для Beacon):
```
Radiotap Header

IEEE 802.11 MAC Header
├── Frame Control (2 байта)
├── Duration/ID (2 байта)
├── Address 1 (6 байт) → Destination (для Beacon: FF:FF:FF:FF:FF:FF)
├── Address 2 (6 байт) → Transmitter (BSSID)
├── Address 3 (6 байт) → BSSID (идентификатор BSS)
├── Sequence Control (2 байта)
└── (возможны другие поля, зависит от типа кадра)

Beacon Frame Body
├── Beacon Fixed Parameters (12 байт):
│ ├── Timestamp (8 байт)
│ ├── Beacon Interval (2 байта)
│ └── Capability Information (2 байта)

Information Elements (IE)
└── последовательность IE, каждый в формате:
Element ID (1 байт) | Length (1 байт) | Value (Length байт)
```
2. Формат Information Element
Каждый IE имеет следующую структуру:
```
┌────────────┬────────────┬─────────────────────┐
│ Element ID │ Length │ Value │
│ 1 byte │ 1 byte │ Length bytes │
└────────────┴────────────┴─────────────────────┘
```
· Element ID – идентификатор типа IE (например, 0 – SSID, 3 – DS Parameter Set, 48 – RSN и т.д.).
· Length – длина поля Value в байтах.
· Value – данные IE.
Пример для SSID с именем MyWiFi_24:
```
00 09 4D 79 57 69 46 69 5F 32 34
│ │ └─────────────────────────────┘
│ │ "MyWiFi_24" (9 байт)
│ └── длина = 9 (0x09)
└───── Element ID = 0 (SSID)
```
Здесь:
· 00 – Element ID (SSID)
· 09 – Length (9 байт)
· 4D 79 57 69 46 69 5F 32 34 – ASCII-коды символов "MyWiFi_24"
После окончания Value следующего IE сразу начинается следующий Element ID.
3. Некоторые важные Element ID
Element ID Название Описание
0 SSID Имя сети
1 Supported Rates Поддерживаемые базовые скорости
3 DS Parameter Set Текущий канал
5 TIM Traffic Indication Map
48 (0x30) RSN Robust Security Network (WPA/WPA2/3)
50 (0x32) Extended Supported Rates Дополнительные поддерживаемые скорости
221 Vendor Specific Производительские данные
4. Базовая структура RSN IE (Element ID 48)
RSN IE содержит параметры безопасности. Приводим базовую структуру:
```
Element ID = 48 (0x30)
Length
Version (2 байта, обычно 1)
Group Cipher Suite (4 байта OUI + 1 байт suite type)
Pairwise Cipher Suite Count (2 байта)
Pairwise Cipher Suite List (по 4 байта OUI + 1 байт на каждый suite)
AKM Suite Count (2 байта)
AKM Suite List (по 4 байта OUI + 1 байт на каждый)
RSN Capabilities (2 байта)
... (возможны дополнительные поля: PMKID Count/List, Group Management Cipher Suite)
```
Cipher Suite и AKM Suite задаются с использованием OUI и типа. Например:
· Group Cipher Suite: 00 0F AC 04 – CCMP (AES)
· Pairwise Cipher Suite: 00 0F AC 04 – CCMP
· AKM Suite: 00 0F AC 02 – PSK (Pre-Shared Key)
Именно из этих байтов Wireshark определяет, что сеть использует WPA2-CCMP с аутентификацией PSK.
5. Принцип интерпретации Wireshark
Wireshark не «знает» SSID или параметры магически. Он последовательно проходит по байтовой структуре кадра:
1. Находит начало 802.11-кадра (после Radiotap).
2. Разбирает заголовок, включая Frame Control.
3. Определяет тип кадра (Beacon).
4. Переходит к Beacon Fixed Parameters.
5. Затем идёт цикл по Information Elements: читает Element ID, затем Length, затем Value. Это продолжается до конца кадра.
Студент должен воспроизвести этот процесс вручную.
Подготовка
1. Убедитесь, что внешний адаптер AIC8800 находится в режиме монитора (интерфейс wlan2, тип monitor). При необходимости выполните:
```bash
sudo ip link set wlan2 down
sudo iw dev wlan2 set type monitor
sudo ip link set wlan2 up
```
2. Убедитесь, что Python 3 и scapy установлены:
```bash
python3 -c "import scapy; print(scapy.__version__)"
```
3. Зафиксируйте канал (например, 6):
```bash
sudo iw dev wlan2 set channel 6
```
Ход работы
Шаг 1: Захват одного Beacon-кадра в файл
Используйте tcpdump для захвата только Beacon и сохранения в файл beacon_capture.pcap:
```bash
sudo tcpdump -i wlan2 -e -s 256 'wlan type mgt subtype beacon' -c 1 -w beacon_capture.pcap
```
Эта команда остановится после захвата одного Beacon.
Шаг 2: Откройте файл в Wireshark
```bash
wireshark beacon_capture.pcap
```
Выберите захваченный кадр. В средней панели разверните структуру:
· Radiotap Header
· IEEE 802.11 Beacon frame
· IEEE 802.11 Wireless Management
· Fixed parameters
· Tagged parameters
Шаг 3: Просмотрите сырые байты кадра
В Wireshark выделите поле IEEE 802.11 Beacon frame и посмотрите на нижнюю панель с байтами.
Важно: начало 802.11-кадра находится не с нулевого смещения, потому что перед ним идёт заголовок Radiotap переменной длины. Длину Radiotap необходимо определить из его собственного поля (обычно первые байты Radiotap). Не хардкодите смещения, а вычисляйте их.
Шаг 4: Определите Frame Control
Первые два байта 802.11-заголовка – Frame Control.
Для Beacon при little-endian представлении обычно:
· byte 0: 0x80
· byte 1: 0x00
Это означает:
· Version = 0
· Type = 0 (Management)
· Subtype = 8 (Beacon)
Здесь 0x80 – это первый байт Frame Control, а не весь двухбайтовый Frame Control. Объяснение: младший байт содержит Subtype в младших 4 битах, поэтому Beacon (subtype=8) даёт значение 0x80.
Шаг 5: Извлеките Address 1, Address 2, Address 3
Сразу после Duration (2 байта) следуют три 6-байтовых адреса:
· Address 1 (Destination) = ff:ff:ff:ff:ff:ff
· Address 2 (Transmitter) = BSSID
· Address 3 (BSSID)
Убедитесь, что вы можете их найти в сырых байтах.
Шаг 6: Разберите Beacon Fixed Parameters
После заголовка 802.11 идут 12 байт Fixed Parameters:
· Timestamp (8 байт)
· Beacon Interval (2 байта) – значение в Time Units (TU), где 1 TU = 1024 мкс = 1.024 мс. Для перевода в миллисекунды умножьте значение на 1.024. Типичное значение 100 TU соответствует примерно 102.4 мс.
· Capability Information (2 байта)
Определите Beacon Interval (в TU) и пересчитайте в миллисекунды.
Шаг 7: Найдите первый Information Element
Сразу после Fixed Parameters начинается первый IE. Первый байт – Element ID. Для SSID он равен 0x00. Если SSID скрыт, длина может быть 0.
Шаг 8: Самостоятельно декодируйте SSID IE
Используя структуру ID | Length | Value, определите:
· Element ID (должен быть 0)
· Length (длину SSID)
· Value (байты SSID)
Переведите Value из ASCII в текст (если это не скрытая сеть).
Шаг 9: Декодируйте Supported Rates IE (ID = 1)
Найдите следующий IE с ID = 1. Запишите его длину и значение. Каждый байт Value кодирует скорость с учётом бита Basic Rate:
· Если бит 7 (0x80) установлен, скорость является Basic Rate.
· Для получения числового значения скорости: rate_value = byte & 0x7F.
· Скорость в Мбит/с = rate_value * 0.5.
Например:
· 0x82 = 0x02 | 0x80 → rate_value = 2, скорость = 1 Mbps, Basic Rate установлен.
· 0x8C = 0x0C | 0x80 → rate_value = 12, скорость = 6 Mbps, Basic Rate установлен.
· 0x12 = 18 → 9 Mbps, Basic Rate не установлен.
Определите, какие скорости поддерживает ваша точка доступа.
Шаг 10: Декодируйте Channel IE (DS Parameter Set, ID = 3)
Найдите IE с ID = 3. Value обычно один байт – номер канала. Убедитесь, что он совпадает с каналом, который вы задали ранее.
Шаг 11: Найдите TIM IE (ID = 5)
Найдите IE с ID = 5. Структура Value для TIM:
```
Byte 0 → DTIM Count
Byte 1 → DTIM Period
Byte 2 → Bitmap Control
Byte 3.. → Partial Virtual Bitmap
```
Разберите первые три поля.
Шаг 12: Найдите RSN IE (ID = 48) и разберите его
Найдите IE с Element ID = 48 (0x30).
Используя базовую структуру RSN, определите:
· Version (2 байта)
· Group Cipher Suite (4 байта OUI + 1 байт type)
· Pairwise Cipher Suite Count (2 байта)
· Pairwise Cipher Suite List (для каждого элемента: 4 байта OUI + 1 байт type)
· AKM Suite Count (2 байта)
· AKM Suite List (аналогично)
· RSN Capabilities (2 байта)
Если в Value после RSN Capabilities есть дополнительные байты (например, PMKID Count), отметьте их, но для основного разбора достаточно базовой части.
Шаг 13: Сравните с интерпретацией Wireshark
Убедитесь, что все значения, которые вы вручную извлекли, совпадают с полями, показанными в Wireshark.
Шаг 14: Напишите собственный TLV-парсер на Python
Вместо простого использования Scapy, напишите парсер, который вручную разбирает последовательность IE из сырых байтов. Это позволит понять принцип TLV (Tag-Length-Value).
Используйте следующий алгоритм:
```python
def parse_ies(raw_bytes):
offset = 0
ies = []
while offset + 2 len(raw_bytes):
break # защита от некорректных данных
value = raw_bytes[offset + 2: offset + 2 + length]
ies.append((element_id, length, value))
offset += 2 + length
return ies
```
Полный скрипт может:
· Загрузить pcap (например, с помощью Scapy) и получить raw-байты Beacon.
· Определить начало Beacon frame body (после Radiotap и MAC Header).
· Извлечь Fixed Parameters и IE.
· Вывести список IE с их ID, Length и Value в hex.
· Для известных ID (SSID, Supported Rates, DS Parameter Set, RSN) вывести расшифровку.
Пример вывода:
```
BSSID: 1c:61:b4:27:4f:94
IE ID: 0, Length: 9, Value: 4d79576946695f3234
IE ID: 1, Length: 8, Value: 82848b968c129824
IE ID: 3, Length: 1, Value: 06
IE ID: 5, Length: 4, Value: 00000000
IE ID: 48, Length: 20, Value: 0100000fac040100000fac040100000fac020c00
...
```
Для RSN реализуйте разбор по полям.
Шаг 15: Сравните результаты Python, ручного анализа и Wireshark
Убедитесь, что все три способа дают одинаковые значения.
Шаг 16: Контрольная точка результата
Подтвердите, что:
· Ручной разбор кадра дал корректные смещения и значения.
· Python-парсер воспроизвёл структуру IE.
· Wireshark показывает те же SSID, Channel, RSN и другие параметры.
Контрольные вопросы (20) и ответы
1. Что такое Information Element в 802.11?
Ответ: Information Element – структура, используемая для передачи параметров сети в кадрах управления, состоящая из Element ID, Length и Value.
2. Какова структура IE?
Ответ: 1 байт Element ID, 1 байт Length, затем Value длиной Length байт.
3. Какой Element ID у SSID?
Ответ: 0.
4. Какой Element ID у DS Parameter Set?
Ответ: 3.
5. Какой Element ID у RSN?
Ответ: 48 (0x30).
6. Какие поля входят в Beacon Fixed Parameters?
Ответ: Timestamp (8 байт), Beacon Interval (2 байта), Capability Information (2 байта).
7. Что такое Beacon Interval и как его перевести в миллисекунды?
Ответ: Beacon Interval задаёт период рассылки маяков в Time Units (TU). 1 TU = 1.024 мс. Значение поля умножается на 1.024.
8. Где в кадре Beacon находится BSSID?
Ответ: В заголовке 802.11: Address 2 (Transmitter) и Address 3 (BSSID).
9. Почему Address 1 в Beacon равен ff:ff:ff:ff:ff:ff?
Ответ: Beacon передаётся широковещательно, поэтому адрес назначения – broadcast.
10. Что означает байт 0x80 в начале Frame Control?
Ответ: Это первый байт Frame Control, где Version=0, Type=0 (Management), Subtype=8 (Beacon). При little-endian представлении всего Frame Control первые два байта обычно 80 00.
11. Что такое Radiotap и почему его длина переменная?
Ответ: Radiotap – заголовок с радио-метаданными, добавляемый драйвером. Его длина задаётся в самом заголовке и может различаться, поэтому смещение начала 802.11 кадра определяется динамически.
12. Почему Wireshark может правильно отобразить SSID?
Ответ: Потому что он интерпретирует байты согласно спецификации 802.11: находит IE с ID 0, читает длину и декодирует Value как ASCII.
13. Может ли SSID быть скрыт? Как это отражается в IE?
Ответ: Да, в IE SSID длина может быть 0, либо SSID отсутствует, но IE всё равно присутствует с Length=0.
14. Что такое Supported Rates?
Ответ: Список базовых скоростей передачи, поддерживаемых сетью, кодируемых в единицах 500 kbps, с дополнительным битом Basic Rate.
15. Как из байта Supported Rates получить скорость?
Ответ: Скорость (Mbps) = (byte & 0x7F) * 0.5. Если байт содержит 0x80, скорость помечена как Basic Rate.
16. Какие поля включает базовая структура RSN IE?
Ответ: Version, Group Cipher Suite, Pairwise Cipher Suite Count/List, AKM Suite Count/List, RSN Capabilities.
17. Как определить, что сеть использует WPA2-PSK?
Ответ: По RSN IE: Group Cipher Suite = 00 0F AC 04 (CCMP), AKM Suite = 00 0F AC 02 (PSK) и другие параметры.
18. Что такое TIM IE и какова структура его Value?
Ответ: TIM (Traffic Indication Map) содержит информацию о буферизованных пакетах для спящих станций. Value: Byte0 – DTIM Count, Byte1 – DTIM Period, Byte2 – Bitmap Control, далее Partial Virtual Bitmap.
19. Зачем писать собственный TLV-парсер, если есть Scapy?
Ответ: Чтобы понять, как анализаторы разбирают бинарные структуры, и научиться реализовывать парсеры для любых протоколов с TLV-форматом.
20. Какие этические ограничения следует соблюдать при захвате и анализе беспроводных кадров?
Ответ: Проводить захват только на своём оборудовании или с разрешения; не использовать полученную информацию для несанкционированного доступа; соблюдать законодательство.
Заключение
В ходе лабораторной работы вы научились вручную разбирать кадры Beacon 802.11, извлекать BSSID, SSID, параметры канала и безопасности из сырых байтов, а также писать собственный TLV-парсер. Вы убедились, что Wireshark не является «магическим» инструментом, а последовательно интерпретирует байтовую структуру протокола. Эти навыки являются фундаментом для анализа любых сетевых протоколов и разработки собственных инструментов.
Этическое напоминание: Все эксперименты должны проводиться только на собственном оборудовании или с явного разрешения владельца сети.

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1[Benchmark] NVIDIA CMP 100-20007.0730-05-2026
2Практическое руководство по аудиту беспроводных сетей (Wi-Fi) на промышленных объектах и складах0703-07-2026
3[Benchmark] Radeon RX 460 (6.2.6)011.6421-06-2026
4Same hash type, same password, multiple hashes cracked???010.8617-08-2026
5Staff laptops wireless authentication-2606-07-2026
6Скам під час тестових на інтерв'ю010.106-06-2026
7Специальные/зарезервированные IP-адреса?0602-07-2026
8Разработка драйвера сетевого адаптера для Linux. Часть 20830-06-2026
9Wired: уязвимости в AirPlay позволяют хакерам взломать устройство0030-04-2025

Классификация: . Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 14.65. Источник: vk.com.