混杂模式

混杂模式(Promiscuous Mode)
混杂模式(Promiscuous Mode)是指一台机器能够接收所有经过它的数据流,而不论其目的地址是否是他。是相对于通常模式(又称“非混杂模式”)而言的。这被 网络 管理员使用来诊断网络问题,但是也被无认证的想偷听 网络通信(其可能包括 密码和其它敏感的信息)的人利用。一个非路由选择节点在混杂模式下一般仅能够在相同的 冲突域(对 以太网和无线 局域网)内监控通信到和来自其它节点或环(对令牌环或FDDI),其是为什么网络 交换被用于对抗恶意的混杂模式。
混杂模式就是接收所有经过 网卡数据包,包括不是发给本机的包。默认情况下网卡只把发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。简单的讲,混杂模式就是指网卡能接受所有通过它的数据流,不管是什么格式,什么地址的。事实上,计算机收到数据包后,由网络层进行判断,确定是递交上层(传输层),还是丢弃,还是递交下层(数据链路层、MAC子层)转发。
通常在需要用到 抓包工具,例如 etherealsniffer、capsa时,需要把网卡置于混杂模式,需要用到 软件Winpcap。winpcap是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32 应用程序提供访问网络底层的能力。
对于广播式集线器(Hub)来说,假如PC1、PC2、PC3接在同一个Hub上,当PC1给PC3发送包时,Hub将广播这个包,所以PC2实际上也可以看到这个包,但一般情况下它会将这个发给PC3的包丢弃,但如果处于混杂模式,PC2的网卡驱动程序就不会丢弃这个包,而是把这个包送给上层的驱动程序,应用程序。
简单的说,网卡的混杂模式是为 网络分析而提供的。
检测混杂模式的基本概念
在网络中, 嗅探器接收所有的分组,而不发送任何非法分组。它不会妨碍 网络数据的流动,因此很难对其进行检测。不过,处于混杂模式(promiscuous mode)网卡的状态很显然和处于普通模式下不同。在混杂模式下,应该被硬件过滤掉的分组文会进入到系统的内核。是否回应这种分组完全依赖于内核。
网络嗅探的模式分为:混杂模式和非混杂模式

linux下通过C设置混杂模式(以eth0举例)

char *eth_name = "eth0"; //对网卡eth0进行混杂设置
struct ifreq ethreq; //网络接口结构
strncpy(ethreq.ifr_name, eth_name, IFNAMSIZ); //指定网卡名称
  if(-1 == ioctl(sock_raw_fd, SIOCGIFFLAGS, &ethreq)) //获取网络接口
  {
  perror("ioctl");
  close(sock_raw_fd);
  exit(-1);
  }
/*此处用 | 是因为必须在保留原来设置的情况下,在标志位中加入“混杂”方式*/
  ethreq.ifr_flags |= IFF_PROMISC;
  if(-1 == ioctl(sock_raw_fd, SIOCSIFFLAGS, &ethreq)) //将标志位设置写入
  {
  perror("ioctl");
  close(sock_raw_fd);
  exit(-1);
  }
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值