win10无线网卡混杂模式

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截图设置键

阅读(5735)

本文主要为您介绍笔记本win10截图设置键,内容包括笔记本电脑按什么键可以截屏,win10的,win10快捷截屏怎么设置,win10笔记本任意截图键。截取全屏 自动保存组合键 同时按住Windows+Print Screen组合键,笔记本则按住Windows+Prt Sc SysRq按

win10

win10怎么设置多个背景

阅读(4230)

本文主要为您介绍win10怎么设置多个背景,内容包括如何在win10中使用多个背景,如何在win10中使用多个背景,win10双桌面怎么设置两个不同的壁纸。直接定位到自己想要设置壁纸的图片文件夹小编一般会把图片先放到电脑默认的壁纸文件夹里默认壁

win10

win10保护眼睛设置不改注册表

阅读(4315)

本文主要为您介绍win10保护眼睛设置不改注册表,内容包括word设置的护眼色时有时无,win10系统,用的修改注册表编辑器的办,win10电脑的护眼模式怎么设置,win10护眼模式怎么取消?。Word文档底色设为护眼色步骤: 电脑桌面,右键,点击个性化。 2、点

win10

win10非让我设置苹果手机

阅读(4375)

本文主要为您介绍win10非让我设置苹果手机,内容包括win10找不到iphone手机,怎么回事,升级win10后,电脑无法识别苹果手机!已经试过网上的一些方法,都,非要用苹果电脑相应的操作系统上才能完成开发吗!?!在别的win7。远程桌面连过去报如下错误

win10

win10点蓝牙设置闪退

阅读(3889)

本文主要为您介绍win10点蓝牙设置闪退,内容包括win10打开蓝牙设置闪退,win10蓝牙故障,图标什么的都在,但是打不开蓝牙设置,打开的白,我的电脑是win8系统,蓝牙用不了,设置里一点蓝牙就闪退。1.打开设备并使其可发现。使其可发现的方式取决于

win10

win10酷狗热键设置

阅读(4030)

本文主要为您介绍win10酷狗热键设置,内容包括电脑酷狗输入法怎么设置快捷键?,电脑酷狗输入法怎么设置快捷键?,电脑上有控制音乐的键,酷狗怎么设定?。2015酷狗音乐播放器默认快捷键:播放/暂停:Alt+F5上一首:Alt+Left(左箭头)下一首:Alt+ Right(右箭

win10

win10如何设置定时唤醒

阅读(4252)

本文主要为您介绍win10如何设置定时唤醒,内容包括Win10怎么设置定时开关机休眠唤醒,Win10怎么设置定时开关机休眠唤醒,Win10进入睡眠后怎么设置自动定时唤醒。首先查看电脑的休眠功能是否开启,如果没有需要先开启计算机的休眠功能(注意是“休

win10

win10设置更新在哪

阅读(4133)

本文主要为您介绍win10设置更新在哪,内容包括win10的更新在哪里?怎么设置,win10系统如何更新,更新按钮在哪儿,win10系统更新在哪。Win10系统关闭自动更新功能步骤方法:按WIN+R打开运行,输入services.msc回车然后找到“Windowsupdata”服务

win10

win10处理器个数怎么设置

阅读(4409)

本文主要为您介绍win10处理器个数怎么设置,内容包括win10怎么开启cpu核心数,W10cpu核数怎么修改,win10在任务管理器怎么改应用程序的cpu占用数目。网络上的各种伪技巧多得很,而这个就是比较典型的。在Win7帮助文件中对于msconfig的高级引导

win10

win10如何将任务栏设置成透明

阅读(4160)

本文主要为您介绍win10如何将任务栏设置成透明,内容包括Win10任务栏怎么设置透明,win10电脑任务栏怎么变透明,win10怎么设置任务栏透明。工具:win10方法如下:首先打开操作系统,进入桌面,如下所示,可以看到操作中心和任务栏是没有透明的

win10

win10自动锁定屏幕怎么设置

阅读(5363)

本文主要为您介绍win10自动锁定屏幕怎么设置,内容包括windows10怎么设置自动锁定屏幕,Win101709如何设置自动锁定电脑屏幕,win10电脑屏幕自动锁屏怎么设置?。在Windows10系统桌面,点击桌面左下角的开始按钮,在弹出的开始菜单中点击Windows系

win10

win10设置功能键加fn

阅读(4137)

本文主要为您介绍win10设置功能键加fn,内容包括Mac装的win10怎么设置FN键,笔记本功能键FN在哪里设置啊,怎么将戴尔快捷键设置成FN+的形式?。右下角系统托盘里面,找到bootcamp控制面板。可以在里面修改。(很简单,只有一个选项,你进去一眼就能看

win10

win10怎么给d盘设置权限

阅读(3879)

本文主要为您介绍win10怎么给d盘设置权限,内容包括如何给D盘设置权限?,win10系统D盘权限问题,win10怎么设置权限。win10怎么设置权限呢!当我们局域网里有电脑需要共享的时候怎么设置权限,这个权限有写入权限要怎么操作,如下图有解析。 方法/步

win10

win10蓝牙鼠标pin设置

阅读(4574)

本文主要为您介绍win10蓝牙鼠标pin设置,内容包括win10系统笔记本如何设置无线鼠标,win10系统怎么添加蓝牙鼠标,Win10怎么添加蓝牙鼠标。有线的直接插上即可,无线的操作方法如下:在电脑Win10系统的桌面上,点击左下角的开始菜单中的“控制面板”

win10

win10设置游戏锁帧

阅读(4593)

本文主要为您介绍win10设置游戏锁帧,内容包括Win10怎么游戏锁帧?N卡用很多软件都不行,去调垂直同步又不稳定,win10锁帧60,win10LOL锁帧60。这个问题存在很长时间了,估计还是有很多人因为这个苦恼,我说一下我的解决办法,win10版本是15063版。