設定網絡卡的混雜模式

2021-05-24 12:18:56 字數 1635 閱讀 4931

關於設定網絡卡的混雜模式的實現方法,很多地方都有提及,現在也能蒐集到很多具

他**中抽取,希望對大家的能有所幫助。

一、在普通程式中設定網絡卡混雜模式。

用非常的廣泛。下面給出設定網絡卡混雜模式的實現**:

#include

#include

#include

#include

int set_all_promisc()

return 1;

}二、在核心空間中設定混雜模式

1.在kernel-2.2.x 中

static struct device *sniffer_dev = null;

static unsigned short old_flags, old_gflags;

int init_module ( void ) /* 模組初始化 */

......

return 0;

}void cleanup_module(void)

......

}2.在kernel-2.4.x 中

在2.4中有了許多變化,首先struct device結構改為struct net_device, 再者de

v_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 inte***ce remains promiscuous. once it hits zer

o* 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 ) /* 模組初始化 */

......

return 0;

}void cleanup_module(void)

}......

}三、參考資料

1.利用llkm處理網路通訊----對抗ids、firewall(修訂)

設定網絡卡混雜模式

關鍵api ioctlsocket 設定雜收模式 巨集 define sio rcvall 0x80000000 0x18000000 1 ip頭 typedef struct ipheader ipheader tcp頭 typedef struct tcpheader tcpheader 流程 ...

網絡卡混雜模式介紹與設定

1.混雜模式介紹 混雜模式就是接收所有經過網絡卡的資料報,包括不是發給本機的包。預設情況下網絡卡只把發給本機的包 包括廣播包 傳遞給上層程式,其它的包一律丟棄。簡單的講,混雜模式就是指網絡卡能接受所有通過它的資料流,不管是什麼格式,什麼位址的。當網絡卡處於這種 混雜 方式時,該網絡卡具備 廣播位址 ...

網絡卡的混雜模式

混雜模式 promiscuous mode 混雜模式 promiscuous mode 是指一台機器能夠接收所有經過它的資料流,而不論其目的位址是否是他。是相對於通常模式 又稱 非混雜模式 而言的。這被網路 管理員使用來診斷網路問題,但是也被無認證的想偷聽網路通訊 其可能包括密碼和其它敏感的資訊 的...