0
首先,我是一个新手,所以要温柔....我正在使用libtins库的包装。我希望能够检测ARP请求并获取发件人的MAC地址。我已经链接了libtins并让我的代码正常运行,我能够检测到dot11frameBeacons并获取硬件地址,因此我拥有了一切结构良好的功能(我认为)。libtins ARP请求检测
这里是我的注册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 (...) {
}
}
};
我没有得到任何回应时,我初始化WiFi设备(但在同一个程序我得到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 (...) {
}
}
};
干杯