Обнаружение 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 (однако в той же программе я получаю постоянные уведомления о маяках кадра dot11). Когда я использую одно и то же устройство для подключения к своей сети, пока я отслеживаю ее с помощью 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 (...) {
        }
    }
};

Ваше здоровье


person fred_dev    schedule 23.12.2015    source источник


Ответы (1)


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

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

person fred_dev    schedule 27.12.2015