win10设置混杂模式

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

网卡混杂模式(Promiscuous Model) 工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。

一般的网络分析工具,都是通过把网卡设置为混杂模式来获取底层数据流。网卡设置为混杂模式1.网上流传的设置调整网卡属性,是全双工和半双工设置。

2.网卡设置为混杂模式是比较麻烦的,需要通过编程底层来修改。3.常见的抓包工具如 Sniffer ,WinPcap都自动调整网卡混杂模式功能,开启抓包自动调整为混杂模式,关闭停止抓包程序。

恢复正常模式。

2.如何控制混杂模式

一、在普通程序中设置网卡混杂模式。

在普通程序中普遍用ioctl函数来设置,该函数很值得大家好好的了解,因为它的使用非常的广泛。下面 给出设置网卡混杂模式的实现代码: #include #include #include #include int set_all_promisc() { struct ifreq ifaces[16]; struct ifconf param; int sock, i; param.ifc_len = sizeof(ifaces); param.ifc_req = ifaces; sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); if (sock <= 0) return 0; if (ioctl(sock, SIOCGIFCONF, ¶m)) return 0; for (i = 0; i < param.ifc_len / sizeof(struct ifreq); i++) { if (ioctl(sock, SIOCGIFFLAGS, ifaces + i)) return 0; ifaces[i].ifr_flags |= IFF_PROMISC; /*如果恢复网卡模式,把|= 改成 &=~ */ if (ioctl(sock, SIOCSIFFLAGS, ifaces + i)) return 0; } return 1; } 二、在核心空间中设置混杂模式1.在kernel-2.2.x 中 static struct device *sniffer_dev = NULL; static unsigned short old_flags, old_gflags;int init_module ( void ) /* 模块初始化 */ { 。

sniffer_dev = dev_get("eth0"); if ( sniffer_dev != NULL ) { /* thanks for difeijing of whnet's Security */ old_flags = sniffer_dev->flags; old_gflags = sniffer_dev->gflags; /* * 参看net/core/dev.c里的dev_change_flags() * ->gflags的作用是避免多次重复设置混杂模式,没有其他特别含义 */ /* 设置混杂模式 */ sniffer_dev->flags |= IFF_PROMISC; sniffer_dev->gflags |= IFF_PROMISC; start_bh_atomic(); /* 注意,这个回调函数还是会报告 eth0: Setting promiscuous mode. */ sniffer_dev->set_multicast_list( sniffer_dev ); end_bh_atomic(); }。

return 0; } void cleanup_module(void) { 。

if (sniffer_dev != NULL) { /* 恢复原有模式 */ sniffer_dev>flags = old_flags; sniffer_dev>gflags = old_gflags; start_bh_atomic(); sniffer_dev>set_multicast_list( sniffer_dev ); end_bh_atomic(); }。

} 2.在kernel-2.4.x 中在2.4中有了许多变化,首先struct device结构改为struct net_device, 再者dev_get功能改为测试网络设备是否存在,真正的设置网络混杂模式的函数改为 void dev_set_promiscuity(struct net_device *dev, int inc); 其中根据inc的值来设置混杂模式还是恢复原来设置模式,通过计数来恢复原来模式,这样的好处就是:不会和其他的程序冲突,不在像上述两种实现方式中恢复原来模式就全恢复了,不管还有没有其他的程序是否也设置了混杂模式。

现在就通过计数来恢复原来的模式,只要当计数相加为零才设置成普通模式。linux源代码的注释如下: /** * dev_set_promiscuity - update promiscuity count on a device * @dev: device * @inc: modifier * * Add or remove promsicuity from a device. While the count in the device * remains above zero the interface remains promiscuous. Once it hits zero * the device reverts back to normal filtering operation. A negative inc * value is used to drop promiscuity on the device. */设置网卡混杂模式的实现代码如下:struct net_device *sniffer_dev = NULL; int dev_flags = 0;int init_module ( void ) /* 模块初始化 */ { 。

sniffer_dev = dev_get_by_name("eth0"); if (sniffer_dev != NULL) { dev_flags = 1; dev_set_promiscuity(sniffer_dev, 1); dev_put(sniffer_dev); sniffer_dev = NULL; }。

return 0; }void cleanup_module(void) { 。

if (dev_flags) { sniffer_dev = dev_get_by_name("eth0"); if (sniffer_dev != NULL) { dev_flags = 0; dev_set_promiscuity(sniffer_dev, -1); /*注意此处的第二个参数*/ dev_put(sniffer_dev); sniffer_dev = NULL; } }。

}。

3.windows怎么设置网卡的网卡的混杂模式

网卡混杂模式(Promiscuous Model)

工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。一般的网络分析工具,都是通过把网卡设置为混杂模式来获取底层数据流。

网卡设置为混杂模式

1、网上流传的设置调整网卡属性,是全双工和半双工设置。

2、网卡设置为混杂模式是比较麻烦的,需要通过编程底层来修改。

3、常见的抓包工具如 Sniffer ,WinPcap都自动调整网卡混杂模式功能,开启抓包自动调整为混杂模式,关闭停止抓包程序。恢复正常模式

4.如何控制混杂模式

一、在普通程序中设置网卡混杂模式。

在普通程序中普遍用ioctl函数来设置,该函数很值得大家好好的了解,因为它的使用非常的广泛。下面 给出设置网卡混杂模式的实现代码: #include #include #include #include int set_all_promisc() { struct ifreq ifaces[16]; struct ifconf param; int sock, i; param.ifc_len = sizeof(ifaces); param.ifc_req = ifaces; sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); if (sock <= 0) return 0; if (ioctl(sock, SIOCGIFCONF, ¶m)) return 0; for (i = 0; i < param.ifc_len / sizeof(struct ifreq); i++) { if (ioctl(sock, SIOCGIFFLAGS, ifaces + i)) return 0; ifaces[i].ifr_flags |= IFF_PROMISC; /*如果恢复网卡模式,把|= 改成 &=~ */ if (ioctl(sock, SIOCSIFFLAGS, ifaces + i)) return 0; } return 1; } 二、在核心空间中设置混杂模式 1.在kernel-2.2.x 中 static struct device *sniffer_dev = NULL; static unsigned short old_flags, old_gflags; int init_module ( void ) /* 模块初始化 */ { 。

sniffer_dev = dev_get("eth0"); if ( sniffer_dev != NULL ) { /* thanks for difeijing of whnet's Security */ old_flags = sniffer_dev->flags; old_gflags = sniffer_dev->gflags; /* * 参看net/core/dev.c里的dev_change_flags() * ->gflags的作用是避免多次重复设置混杂模式,没有其他特别含义 */ /* 设置混杂模式 */ sniffer_dev->flags |= IFF_PROMISC; sniffer_dev->gflags |= IFF_PROMISC; start_bh_atomic(); /* 注意,这个回调函数还是会报告 eth0: Setting promiscuous mode. */ sniffer_dev->set_multicast_list( sniffer_dev ); end_bh_atomic(); } 。

return 0; } void cleanup_module(void) { 。

if (sniffer_dev != NULL) { /* 恢复原有模式 */ sniffer_dev>flags = old_flags; sniffer_dev>gflags = old_gflags; start_bh_atomic(); sniffer_dev>set_multicast_list( sniffer_dev ); end_bh_atomic(); } 。

} 2.在kernel-2.4.x 中 在2.4中有了许多变化,首先struct device结构改为struct net_device, 再者dev_get 功能改为测试网络设备是否存在,真正的设置网络混杂模式的函数改为 void dev_set_promiscuity(struct net_device *dev, int inc); 其中根据inc的值来设置混杂模式还是恢复原来设置模式,通过计数来恢复原来模式,这样的好处就是:不会和其他的程序冲突,不在像上述两种实现方式中恢复原来模式就全恢复了,不管还有没有其他的程序是否也设置了混杂模式。

现在就通过计数来恢复原来的模式,只要当计数相加为零才设置成普通模式。 linux源代码的注释如下: /** * dev_set_promiscuity - update promiscuity count on a device * @dev: device * @inc: modifier * * Add or remove promsicuity from a device. While the count in the device * remains above zero the interface remains promiscuous. Once it hits zero * the device reverts back to normal filtering operation. A negative inc * value is used to drop promiscuity on the device. */ 设置网卡混杂模式的实现代码如下: struct net_device *sniffer_dev = NULL; int dev_flags = 0; int init_module ( void ) /* 模块初始化 */ { 。

sniffer_dev = dev_get_by_name("eth0"); if (sniffer_dev != NULL) { dev_flags = 1; dev_set_promiscuity(sniffer_dev, 1); dev_put(sniffer_dev); sniffer_dev = NULL; } 。

return 0; } void cleanup_module(void) { 。

if (dev_flags) { sniffer_dev = dev_get_by_name("eth0"); if (sniffer_dev != NULL) { dev_flags = 0; dev_set_promiscuity(sniffer_dev, -1); /*注意此处的第二个参数*/ dev_put(sniffer_dev); sniffer_dev = NULL; } } 。

}。

5.请教各位高手如何将网卡设置为混杂模式

RtlZeroMemory(&pAdapt->Request, sizeof(NDIS_REQUEST));

ulFilter = NDIS_PACKET_TYPE_PROMISCUOUS ;

pAdapt->Request.RequestType = ;

pAdapt->Request.DATA.SET_INFORMATION.Oid = OID_GEN_CURRENT_PACKET_FILTER;

pAdapt->Request.DATA.SET_INFORMATION.InformationBuffer = &ulFilter;

pAdapt->Request.DATA.SET_INFORMATION. = sizeof(ulFilter);

NdisRequest(Status, pAdapt->BindingHandle, &pAdapt->Request);

或 NdisRequest OID_GEN_CURRENT_PACKET_FILTER ,增加NDIS_PACKET_TYPE_PROMISCUOUS 标志

或 Const

NDIS_PACKET_TYPE_DIRECTED =$0001;

NDIS_PACKET_TYPE_MULTICAST =$0002;

NDIS_PACKET_TYPE_ALL_MULTICAST =$0004;

NDIS_PACKET_TYPE_BROADCAST =$0008;

NDIS_PACKET_TYPE_SOURCE_ROUTING =$0010;

NDIS_PACKET_TYPE_PROMISCUOUS =$0020;

NDIS_PACKET_TYPE_SMT =$0040;

NDIS_PACKET_TYPE_MAC_FRAME =$8000;

NDIS_PACKET_TYPE_FUNCTIONAL =$4000;

NDIS_PACKET_TYPE_ALL_FUNCTIONAL =$2000;

NDIS_PACKET_TYPE_GROUP =$1000;

function SetOid(hVxD:THandle; ulOid,ulLength,data:ULong):PBYTE;

var

cbin,cbRet,a:DWord;

ioctl:ULong;

pOidData:PPACKET_OID_DATA;

begin

cbIn := sizeof(PACKET_OID_DATA) + ulLength;

pOidData:= PPACKET_OID_DATA(@InBuff);

if (ulOid = OID_GEN_CURRENT_PACKET_FILTER) then

ioctl := ULONG (IOCTL_PROTOCOL_SET_OID);

fillchar(InBuff, 0, cbIn+1);

pOidData.Oid := ulOid;

pOidData.Length := ulLength;

pOidData.Data[0] := UCHAR(data);

cbRet := QueryPacket( hVxD, ioctl, @InBuff, cbIn, @InBuff, cbIn );

result:=0;

end;

SetOid(hVxD, OID_GEN_CURRENT_PACKET_FILTER, 4, NDIS_PACKET_TYPE_PROMISCUOUS);

win10设置混杂模式

转载请注明出处windows之家 » win10设置混杂模式

win10

win10开机出现主板设置界面怎么办

阅读(54)

本文主要为您介绍win10开机出现主板设置界面怎么办,内容包括你好!我的电脑开机显示主板设置,Win10系统的u430p开机不能进入bios界面怎么办呢?,从新装系统时怎样设置开机时就显示安装盘的目录?主板怎么设置.哪个。如果你是台式机安装系统需

win10

win10via声卡设置

阅读(51)

本文主要为您介绍win10via声卡设置,内容包括via声卡win10怎么设置面板,win10进游戏为什么没声音?,win10没有声音的解决方法?。我的弄好了,WIN10的现在还不支持VDECK面板,去VIA官网下载WIN8的声卡驱动程序就可以兼容,就有了,步骤如下; 登录官网,在

win10

win10戴尔fn设置方法

阅读(89)

本文主要为您介绍win10戴尔fn设置方法,内容包括戴尔电脑,win10系统,为什么我设置不了fn键?,Win10系统笔记本下如何关闭fn功能键?,Win10正式版热点开启方法Win10怎么共享热点。点击开始菜单,点击【电源】按钮,点击重启; 2、按下请按F2键(或Fn+F2

win10

怎样将win10还原出厂设置

阅读(59)

本文主要为您介绍怎样将win10还原出厂设置,内容包括win10系统电脑怎么恢复出厂设置,Win10系统怎么恢复出厂设置,win10系统怎么还原出厂设置。打开Win10左下角的“开始菜单”然后选择进入【电脑设置】,如下图所示。进入电脑设置之后,我们再点

win10

win10设置背景绿

阅读(78)

本文主要为您介绍win10设置背景绿,内容包括WIN10我的电脑里面的背景怎么更换成淡绿色,win10怎么把网页背景设置成绿色,Win10背景设置淡绿色护眼方法。目前只能通过修改注册表实现,具体步骤如下:打开注册表:运行“regedit”确定;2、依次打开[hke

win10

win10如何屏保设置不可选

阅读(78)

本文主要为您介绍win10如何屏保设置不可选,内容包括win10电脑锁屏壁纸怎么设置不了,win10不自动屏保了,Win10专业版下桌面背景变黑壁纸无法设置咋办?。工具: WIN10方法和步骤:点击开始菜单选择打开“设置”。

win10

win10高级无线设置在哪里找

阅读(60)

本文主要为您介绍win10高级无线设置在哪里找,内容包括Win10系统下找不到无线网络设置怎么办,Win10正式版热点开启方法Win10怎么共享热点,Win10笔记本找不到WiFi是怎么回事呢?。最近,一位Win10系统笔记本的用户跟小编反映:手机可以连接无线网

win10

win10怎么设置中文简体美式键盘

阅读(117)

本文主要为您介绍win10怎么设置中文简体美式键盘,内容包括Windows10怎么添加中文(简体)—美式键盘,win10怎么添加简体中文美式键盘,win10怎么设置中文简体美式键盘。说明:这里将添加“简体中文(美式键盘)”,也就是英文输入法,并设置为默认输入法

win10

win10我进不了设置界面

阅读(58)

本文主要为您介绍win10我进不了设置界面,内容包括如何解决win10无法进入bios设置界面,windows10为什么设置界面打不开,win10无法打开设置怎么办。Windows10系统打不开控制面板和PC设置的解决方法第一步:用专业杀毒软件查杀病毒(略)。第二步:在

win10

win10服务界面在哪里设置密码

阅读(52)

本文主要为您介绍win10服务界面在哪里设置密码,内容包括windows10怎么设置密码,win10设置密码在哪里,windows10怎么设置密码。1.点击开始菜单按钮,点击账户名称,然后点击【更改账户设置】。2.点击左侧的【登录选项】即可看到三种密码设置选项

win10

win10电脑进程删除广告

阅读(64)

本文主要为您介绍win10电脑进程删除广告,内容包括win10电脑广告弹窗太多怎么彻底关闭,w10系统如何关闭广告窗口,win10系统弹窗广告怎么去除win10操作。方法一1电脑出现弹窗广告时先不要急着关闭,按下快捷键Ctrl+alt+delete打开任务管理器。

win10

win10电脑更新系统黑屏

阅读(59)

本文主要为您介绍win10电脑更新系统黑屏,内容包括win10系统更新会黑屏怎么办,win10系统更新会黑屏怎么办,win10更新后黑屏怎么办。WIN10进入系统后黑屏:首先检查一下是否因为显示器的刷新频率设置过高而导致的,进入安全模式后右击桌面并选择

win10

win10电脑系统保护已关闭怎么打开

阅读(54)

本文主要为您介绍win10电脑系统保护已关闭怎么打开,内容包括win10病毒防护已关闭怎么开启,win10这个病毒防护已关闭是什么意思啊?怎么开启呢?,电脑w10怎么打开系统保护。首先打开操作中心,可以看到其通知说“病毒防护已关闭,点击或单击以启用

win10

win7电脑能打开win10打不开

阅读(70)

本文主要为您介绍win7电脑能打开win10打不开,内容包括在win7可以打开在win10打不开怎么办,win7升级成Win10后系统为什么打不开,怎么办?,我的win7家庭普通版升级成win10就打不开电脑只能还原系统怎?爱问。Win10回退的基本条件:但需要注意的是

win10

win10开机出现主板设置界面怎么办

阅读(54)

本文主要为您介绍win10开机出现主板设置界面怎么办,内容包括你好!我的电脑开机显示主板设置,Win10系统的u430p开机不能进入bios界面怎么办呢?,从新装系统时怎样设置开机时就显示安装盘的目录?主板怎么设置.哪个。如果你是台式机安装系统需

win10

win10via声卡设置

阅读(51)

本文主要为您介绍win10via声卡设置,内容包括via声卡win10怎么设置面板,win10进游戏为什么没声音?,win10没有声音的解决方法?。我的弄好了,WIN10的现在还不支持VDECK面板,去VIA官网下载WIN8的声卡驱动程序就可以兼容,就有了,步骤如下; 登录官网,在

win10

win10戴尔fn设置方法

阅读(89)

本文主要为您介绍win10戴尔fn设置方法,内容包括戴尔电脑,win10系统,为什么我设置不了fn键?,Win10系统笔记本下如何关闭fn功能键?,Win10正式版热点开启方法Win10怎么共享热点。点击开始菜单,点击【电源】按钮,点击重启; 2、按下请按F2键(或Fn+F2

win10

怎样将win10还原出厂设置

阅读(59)

本文主要为您介绍怎样将win10还原出厂设置,内容包括win10系统电脑怎么恢复出厂设置,Win10系统怎么恢复出厂设置,win10系统怎么还原出厂设置。打开Win10左下角的“开始菜单”然后选择进入【电脑设置】,如下图所示。进入电脑设置之后,我们再点

win10

win10设置背景绿

阅读(78)

本文主要为您介绍win10设置背景绿,内容包括WIN10我的电脑里面的背景怎么更换成淡绿色,win10怎么把网页背景设置成绿色,Win10背景设置淡绿色护眼方法。目前只能通过修改注册表实现,具体步骤如下:打开注册表:运行“regedit”确定;2、依次打开[hke

win10

win10如何屏保设置不可选

阅读(78)

本文主要为您介绍win10如何屏保设置不可选,内容包括win10电脑锁屏壁纸怎么设置不了,win10不自动屏保了,Win10专业版下桌面背景变黑壁纸无法设置咋办?。工具: WIN10方法和步骤:点击开始菜单选择打开“设置”。

win10

win10高级无线设置在哪里找

阅读(60)

本文主要为您介绍win10高级无线设置在哪里找,内容包括Win10系统下找不到无线网络设置怎么办,Win10正式版热点开启方法Win10怎么共享热点,Win10笔记本找不到WiFi是怎么回事呢?。最近,一位Win10系统笔记本的用户跟小编反映:手机可以连接无线网

win10

win10静态ip设置无线路由器

阅读(67)

本文主要为您介绍win10静态ip设置无线路由器,内容包括无线路由怎么设置静态IP?,静态IP怎么设?无线路由器写192.168.1.1,静态ip地址怎么设置路由器,。方法进入管理界面后,点击 网络参数 >> WAN口设置,WAN口连接类型选择为静态IP,并填写IP地址、