使用winpcap编写sniffer,遇到的乖离

来源:互联网 发布:未来世界格局预测知乎 编辑:程序博客网 时间:2024/05/22 12:05

最近在使用winpcap编写sniffer,也就是抓包软件。

winpcap本身很完善了,从获取设备列表到接收数据包,都有例程代码。需要我们做的就是把接收到的数据包按照协议封装形式拆分。

其实问题都不是很大,但是遇到一些问题。

比如获取设备列表的代码

if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)

这里的pcap_findalldevs_ex和PCAP_SRC_IF_STRING是编译器找不到的

虽然环境都配置好了,但是就是不行,如果环境没有配置好,为什么将这两个用相同功能函数提到就可以运行?!!!替代pcap_findalldevs

同样的问题出现在打开设备时

if ( (adhandle= pcap_open(d->name,65536,PCAP_OPENFLAG_PROMISCUOUS,
1000, NULL, errbuf ) ) == NULL)
PCAP_OPENFLAG_PROMISCUOUS这就是设置混杂模式的一个宏定义 具体整数值 1,设置为1就可以使用。
pcap_open也是无法使用的pcap_open_live替代。

其实代码的整体的难点就在于使用帮助文档,代码整体思想根本没有任何难度。关于编译器出现的这种奇葩,我真心无语了。

0 0
原创粉丝点击