Этому инструменту необходимо отправлять пакеты с помощью протоколов низкого уровня, таких как IEEE 802.1X.
Когда я проверяю пакеты в Wireshark, я замечаю, что заголовок радиотапа отличается от того, который я создал. После некоторого расследования выяснилось, что ядро Linux автоматически добавляет свой собственный заголовок Radiotap поверх моего пакета, хотя я уже включил его.
Мой вопрос:
Есть ли способ запретить ядру Linux автоматически добавлять заголовок Radiotap? Например, можно ли этим управлять с помощью setsockopt()?
Я отправляю пакеты IEEE 802.1X через Wi-Fi, поэтому включаю в пакет заголовок radiotap.
Я обнаружил кое-что новое: все байты, которые я вставил в свой собственный заголовок Radiotap, интерпретируются в Wireshark, как если бы они были значениями для дополнительных полей в заголовке Radiotap, добавленных ядром Linux.
Итак, есть два варианта.
- Ядро Linux всегда будет добавлять заголовок Radiotap, даже если я его уже включил.
- Мой заголовок Radiotap неверен.
// File headers.h
struct radiotap_header {
uint8_t version; // must be 0
uint8_t pad; // must be 0
uint16_t length; // length of the radiotap header
uint32_t bitmap; // a bitmap of present fields
} __attribute__((packed));
// File main.cpp
// code in function main()...
std::vector packet;
// the radiotap header
radiotap_header radiotap;
radiotap.version = 0;
radiotap.pad = 0;
radiotap.length = 8; // the minimum length is 8
radiotap.bitmap = 0;
// copy the header to the beginning of the packet
memcpy(packet.data(), &radiotap, sizeof(radiotap));
// the rest of the headers...
// send the packet
int bytesSent = sendto(sock, packet.data(), packet.size(), 0, (sockaddr*)&interface, socketLength);
if (bytesSent
Подробнее здесь: https://stackoverflow.com/questions/798 ... aw-sockets
Мобильная версия