请问各位高手,WinPcap中设置网卡为混杂模式的方法
小弟最近用MFC+WinPcap开发了一个简单的嗅探工具,本来意图是截获网卡上获得的所有的包(包括不是发送给自己主机的包),我上网查了相关资料后知道只要把网卡设置为混杂模式就可以了,方法是pcap_open_live的第三个参数设置为1就可以了,但我现在的问题是即使我按照上述方法将网卡设置为混杂模式依然不能收到除了发送给自己主机或自己主机发送出去的包以外的包,不知道是硬件限制还是其他什么原因?不过自我感觉应该不是硬件限制的问题,因为我下载过一个叫聚生网管的局域网管理软件是可以正常工作的。望各位高手指教。
[解决办法]
嗅探 并不能弄到所有数据, 你的情况正常
要实现监视所有数据要用驱动或者HookAPI
[解决办法]
就像对文件操作时要取得文件描述符一样,在这里要取得网卡的描述符
pcap_t * pcap_open_live ( char * device, int snaplen, int promisc,
int to_ms, char * errbuf );
pcap_t就是网卡描述符的类型,
device是设备名,如eth0
snaplen是要抓获的最大的包的字节数
promisc如果为非0的话,则将网卡设为混杂模式
to_ms是超时时间,如果为0则永不超时
。Winpcap定义了三种标志:
 PCAP_OPENFLAG_PROMISCUOUS:1,它定义了适配器(网卡)是否进入混杂模式(promiscuous mode)。
 PCAP_OPENFLAG_DATATX_UDP:2,它定义了数据传输(假如是远程抓包)是否用UDP协议来处理。
 PCAP_OPENFLAG_NOCAPTURE_RPCAP:4,它定义了远程探测器是否捕获它自己产生的数据包。