首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libtins ARP请求检测

libtins ARP请求检测
EN

Stack Overflow用户
提问于 2015-12-23 19:36:20
回答 1查看 601关注 0票数 0

首先,我是个新手,所以要温文尔雅...我使用的是libtins库的包装器。我希望能够检测arp请求并获得发送者的mac地址。我有链接库和我的代码运行,我能够检测dot11frameBeacons并获得硬件地址,所以我在结构上一切正常(我认为)。

以下是我注册ARP请求的代码

代码语言:javascript
复制
  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请求。任何关于我做错了什么的线索都会很棒。我以为这句话

代码语言:javascript
复制
            packet.pdu()->rfind_pdu<Tins::ARP>();

会找到arp请求。

这里是用于获取dot11帧信标的相应代码,以供参考。

代码语言:javascript
复制
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 (...) {
        }
    }
};

干杯

EN

回答 1

Stack Overflow用户

发布于 2015-12-27 22:22:21

好吧,这并不复杂,我初始化我的嗅探器时启用了监控模式,为了监听ARP请求,嗅探器不应该启用监控模式。我的初始化代码不在最初的问题中,这使得这个问题不可能从我发布的代码中解决--我的错误。

我再次检查wirecast并注意到,当我收到arp请求通知时,我的wifi没有处于监控模式,从而解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34434831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档