Обнаружение ARP-запроса libtins

Во-первых, я новичок, так что будьте осторожны … Я использую обертку для библиотеки libtins. Я хочу, чтобы иметь возможность обнаруживать запросы arp и получить MAC-адрес отправителя. Я связал libtins и мой код работает, я могу обнаружить dot11frameBeacons и получить аппаратный адрес, так что у меня все структурно в порядке (я думаю).

Вот мой код для регистрации запросов ARP

  class ofxSnifferARPRequestFrame {
public:
bool isValid = false;

string ssid;
HWAddress<6> addr;

ofxSnifferARPRequestFrame() {}

ofxSnifferARPRequestFrame(Packet packet) {
try {
packet.pdu()->rfind_pdu<Tins::ARP>();
cout<<"ARP REQUEST RECEIVED"<<endl;

const Tins::ARP &data = packet.pdu()->rfind_pdu<Tins::ARP>();

addr = get_dst_addr_ARP(data);
isValid = true;
} catch (...) {
}
}
};

Я не получаю ответа, когда инициализирую устройство Wi-Fi (однако в той же программе я получаю постоянные уведомления о маяках с точками кадра11). Когда я использую одно и то же устройство для подключения к своей сети, а я наблюдаю за ним с помощью wireshark, я вижу запрос arp. Любые подсказки относительно того, что я делаю неправильно, были бы великолепны. Я думал, что эта линия

            packet.pdu()->rfind_pdu<Tins::ARP>();

нашел бы запрос arp.

Для справки здесь приведен соответствующий код, который работает для получения маяков кадра dot11.

class ofxSnifferProbeRequestFrame {
public:
bool isValid = false;

string ssid;
HWAddress<6> addr;

ofxSnifferProbeRequestFrame() {}

ofxSnifferProbeRequestFrame(Packet packet) {
try {
packet.pdu()->rfind_pdu<Tins::Dot11ProbeRequest>();const Tins::Dot11ManagementFrame &data = packet.pdu()->rfind_pdu<Tins::Dot11ManagementFrame>();
ssid = data.ssid();
addr = get_src_addr(data);
isValid = true;
} catch (...) {
}
}
};

ура

0

Решение

Хорошо, это было не так сложно, я инициализировал мой сниффер с включенным режимом монитора, чтобы прослушивать ARP-запросы, у сниффера не должен быть включен режим монитора. Мой код инициализации отсутствует в исходном вопросе, и это делает невозможным решение из кода, который я разместил — моя ошибка.

Я решил эту проблему, проверив еще раз с помощью Wirecast и заметив, что когда я получал уведомления о запросе arp, мой Wi-Fi не был в режиме монитора.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]