首先,我是个新手,所以要温文尔雅...我使用的是libtins库的包装器。我希望能够检测arp请求并获得发送者的mac地址。我有链接库和我的代码运行,我能够检测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 (...) {
}
}
};当我初始化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 (...) {
}
}
};干杯
发布于 2015-12-27 22:22:21
好吧,这并不复杂,我初始化我的嗅探器时启用了监控模式,为了监听ARP请求,嗅探器不应该启用监控模式。我的初始化代码不在最初的问题中,这使得这个问题不可能从我发布的代码中解决--我的错误。
我再次检查wirecast并注意到,当我收到arp请求通知时,我的wifi没有处于监控模式,从而解决了这个问题。
https://stackoverflow.com/questions/34434831
复制相似问题