關於設定網絡卡的混雜模式的實現方法,很多地方都有提及,現在也能蒐集到很多具他**中抽取,希望對大家的能有所幫助。
一、在普通程式中設定網絡卡混雜模式。
用非常的廣泛。下面給出設定網絡卡混雜模式的實現**:
#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 是指一台機器能夠接收所有經過它的資料流,而不論其目的位址是否是他。是相對於通常模式 又稱 非混雜模式 而言的。這被網路 管理員使用來診斷網路問題,但是也被無認證的想偷聽網路通訊 其可能包括密碼和其它敏感的資訊 的...