c/c++语言开发共享由libcap(pcap)和无线混淆

背景:我正在教自己关于数据包嗅探。 我在一个shell中运行一个非常简单的服务器,从另一个shell中运行telnet,然后尝试不同的方法来嗅探流量。 当我使用原始套接字(IPPROTO_TCP)时,我会捕获我发送的内容。 我只捕获我发送的内容,而不是互联网。 libcap的行为让我困惑如下:

(1)首先,要检查它,我使用pcap_findalldevs捕获所有设备(也见下面的(2))。 我发现wlan0很好。 如果我使用连接到“所有流量”(根据手册页)

if ( !( pcap_handle = pcap_open_live(NULL, 4096, 1, 0, errbuf) ) ) 

我捕获了我发送的内容(加上更多内容,请参阅(3))。 当我尝试使用连接到它时

 if ( !( pcap_handle = pcap_open_live("wlan0", 4096, 1, 0, errbuf) ) ) 

对我来说这似乎是正确的方式,而不是’所有’,我捕获了大量的一般流量,但我没有发送任何东西。 想法?

(2)我首先使用pcap_findalldevs找到所有设备。 由于pcap_if_t结构可能包含多个元素,因此我将所有这些元素打印出来,以查看以下内容:

 Devices found: 1. eth0 - None: family: 17, address: 2.0.0.0 2. wlan0 - None: family: 17, address: 3.0.0.0 family: AF_INET, address: 192.168.0.159 family: 10, address: 0.0.0.0 3. usbmon1 - USB bus number 1: 4. usbmon2 - USB bus number 2: 5. usbmon3 - USB bus number 3: 6. usbmon4 - USB bus number 4: 7. usbmon5 - USB bus number 5: 8. any - Pseudo-device that captures on all interfaces: 9. lo - None: family: 17, address: 1.0.0.0 family: AF_INET, address: 127.0.0.1 family: 10, address: 0.0.0.0 

我对此都很陌生。 某些设备提供AF_INET(= IPv4),IPv6(10)和数据包(17)的捕获。 当我连接到“wlan0”时,如何确保连接到某些设备的“地址”? 这与问题有关吗?

(3)使用原始套接字时,我真的只捕获我发送到服务器的内容。 当我使用libcap时,我还会捕获从打印出来的字节中必须是互联网标题的内容。 我对此都很陌生。 如果有人可以详细说明我在这里捕获的是什么,我没有在原始套接字上捕获,这将是值得赞赏的。 那些UDP或ICMP数据包,根据定义,我的IPPPROTO_TCP套接字不能捕获,这就是为什么我没有看到那些使用原始套接字?

非常感谢。

编辑:我使用gcc / gdb组合在东芝上网本的Ubuntu 10.04下工作。

需要了解更多c/c++开发分享由libcap(pcap)和无线混淆,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享由libcap(pcap)和无线混淆相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979446.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐