怎样网卡设置混杂模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样网卡设置混杂模式相关的知识,希望对你有一定的参考价值。

我的系统是xp,想把网卡设置成混杂模式,在网上看了点资料,要编程的居多,可惜啊,编程是咱的盲区,还有些资料显示可以设置解决,“在我的电脑右键属性,然后点硬件,再点设备管理器,打开设备管理器,双击在网络适配器那里,双击后,在网卡那里在右键属性,然后点那个高级,在右边的值选结尾是FULL DUPLEX的就是混杂模式了! ”按照那个资料设置最后没有那一项,见图
给个解决方案吧

有时候为嗅探到网络上的数据,需要将网卡设置到混杂模式。进入该模式将网络上的数据一并抓获,为此在设置nic的混杂模式的时候有诸多方法:
一、通过shell命令来实现:
ifconfig eth1 promisc 设置混杂模式
ifconfig eth1 -promisc 取消混杂模式
执行结果如下
[root@localhost tftpboot]# ifconfig
eth6 Link encap:Ethernet HWaddr 08:00:27:70:1D:79
inet6 addr: fe80::a00:27ff:fe70:1d79/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:100124 errors:0 dropped:0 overruns:0 frame:0
TX packets:8795 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12986638 (12.3 MiB) TX bytes:6452270 (6.1 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1303 errors:0 dropped:0 overruns:0 frame:0
TX packets:1303 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:303973 (296.8 KiB) TX bytes:303973 (296.8 KiB)
[root@localhost tftpboot]# ifconfig eth6 promisc
[root@localhost tftpboot]# ifconfig
eth6 Link encap:Ethernet HWaddr 08:00:27:70:1D:79
inet6 addr: fe80::a00:27ff:fe70:1d79/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:100154 errors:0 dropped:0 overruns:0 frame:0
TX packets:8795 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:13007885 (12.4 MiB) TX bytes:6452270 (6.1 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1303 errors:0 dropped:0 overruns:0 frame:0
TX packets:1303 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:303973 (296.8 KiB) TX bytes:303973 (296.8 KiB)
[root@localhost tftpboot]#
二、通过C语言方式编程来实现
#include <stdio.h>

#include <unistd.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <errno.h>

#include <linux/if_ether.h>

#include <net/if.h>

#include <sys/ioctl.h>

#include <string.h>

#define ETH_NAME "eth1"

int do_promisc(void)

int f, s;

struct ifreq ifr;

if ( (f=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)))<0)

return -1;



strcpy(ifr.ifr_name, ETH_NAME);

if ((s = ioctl(f, SIOCGIFFLAGS, &ifr))<0)

close(f);

return-1;



if(ifr.ifr_flags & IFF_RUNNING)

printf("eth link up\\n");

else

printf("eth link down\\n");



ifr.ifr_flags |= IFF_PROMISC;

if ((s = ioctl(f, SIOCSIFFLAGS, &ifr)) < 0)

return -1;



printf("Setting interface ::: %s ::: to promisc\\n\\n", ifr.ifr_name);

return 0;



int check_nic(void)



struct ifreq ifr;

int skfd = socket(AF_INET, SOCK_DGRAM, 0);

strcpy(ifr.ifr_name, ETH_NAME);

if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0)



close(skfd);

return -1;



if(ifr.ifr_flags & IFF_RUNNING)

printf("link up\\n");

close(skfd);

return 0; // 网卡已插上网线

else

printf("link down\\n");

close(skfd);

return -1;





int main(void)

do_promisc();

return 0;

参考技术A 建议你直接去网上下载一个sniffer,网络嗅探器,他可以帮你把网卡设置成混杂模式本回答被提问者采纳 参考技术B 随便装个让网卡边混杂模式的软件不就行了么,

如何在win7下设置网卡的混杂模式

参考技术A 网卡混杂模式(Promiscuous Model) 工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。一般的网络分析工具,都是通过把网卡设置为混杂模式来获取底层数据流。网卡设置为混杂模式1.网上流传的设置调整网卡属性,是全双工和半双工设置。2.网卡设置为混杂模式是比较麻烦的,需要通过编程底层来修改。3.常见的抓包工具如 Sniffer ,WinPcap都自动调整网卡混杂模式功能,开启抓包自动调整为混杂模式,关闭停止抓包程序。恢复正常模式参考资料: 网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。

以上是关于怎样网卡设置混杂模式的主要内容,如果未能解决你的问题,请参考以下文章

如何在win7下设置网卡的混杂模式

怎么设置网卡混杂模式

网卡怎么设置成混杂模式

wireshark1.2设置混杂模式

如何在windows中将网卡设置为混杂模式

wireshark抓包将网卡设置为混杂模式