C++ libtins ARP请求检测

C++ libtins ARP请求检测,c++,packet-capture,openframeworks,packet-sniffers,arp,C++,Packet Capture,Openframeworks,Packet Sniffers,Arp,首先,我是个新手,所以要温柔。。。。我正在使用libtins库的包装器。我希望能够检测arp请求,并获得发送方的mac地址。我已经链接了libtin并运行了我的代码,我能够检测到dot11framebeacon并获得硬件地址,所以我认为结构上一切正常 这是我注册ARP请求的代码 class ofxSnifferARPRequestFrame { public: bool isValid = false; string ssid; HWAddress<6>

首先,我是个新手,所以要温柔。。。。我正在使用libtins库的包装器。我希望能够检测arp请求,并获得发送方的mac地址。我已经链接了libtin并运行了我的代码,我能够检测到dot11framebeacon并获得硬件地址,所以我认为结构上一切正常

这是我注册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 (...) {
        }
    }
};
XsnifferArpRequestFrame的
类{
公众:
bool isValid=false;
字符串ssid;
地址地址;
ofxSnifferARPRequestFrame(){}
ofxSnifferARPRequestFrame(数据包){
试一试{
packet.pdu()->rfind_pdu();
coutrfind_pdu();
ssid=data.ssid();
addr=获取src addr(数据);
isValid=true;
}捕获(…){
}
}
};

干杯

好的,这没那么复杂,我在启用监控模式的情况下初始化我的嗅探器,以侦听ARP请求嗅探器不应该启用监控模式。我的初始化代码不在最初的问题中,因此无法从我发布的代码中解决这个问题-我的错误

我解决了这个问题,再次通过wirecast进行检查,发现当我收到arp请求通知时,我的wifi没有处于监控模式

            packet.pdu()->rfind_pdu<Tins::ARP>();
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 (...) {
        }
    }
};