|
作者: ilovepeace [ilovepeace] 论坛用户 | 登录 |
想在win下写个sniffer,但win下好象没有ifreq结构,怎样设置网卡为混杂模式呢?多谢赐教! |
地主 发表时间: 08/29 11:45 |
回复: 286 [unique] 版主 | 登录 |
使用SOCK_RAW |
B1层 发表时间: 08/29 12:08 |
回复: ilovepeace [ilovepeace] 论坛用户 | 登录 |
应该和套接字无关啊?斑竹能说详细点吗?多谢! |
B2层 发表时间: 08/29 18:13 |
回复: 286 [unique] 版主 | 登录 |
Windows下好象没有设置网卡为混杂模式的命令。如果想设可能要到NIS网卡驱动一级。windows 98下可采用vxd,windows 2000下可以WMD技术。 不过可以通过原始套接字接收基于TCP/IP的数据包。 |
B3层 发表时间: 08/29 21:14 |
回复: ejdm [ejdm] 论坛用户 | 登录 |
// 创建RAW SOCKET SOCKET nSockRaw = socket(AF_INET , SOCK_RAW , IPPROTO_RAW); SOCKADDR_IN sa; sa.sin_family = AF_INET; sa.sin_port = htons(7000); sa.sin_addr.s_addr = inet_addr(szSrcAddr); bind(nSockRaw, (PSOCKADDR)&sa, sizeof(sa)); // 设置接收所有数据报(混杂模式) DWORD dwBufferLen[10] ; DWORD dwBufferInLen = 1 ; DWORD dwBytesReturned = 0 ; WSAIoctl(nSockRaw, SIO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen), &dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL); // 接收数据报 char RecvBuf[MAX_PACK_LEN] = {0}; recv(nSockRaw, RecvBuf, sizeof(RecvBuf), 0); 别的地方看到的,不知是不是你所需要的。 |
B4层 发表时间: 08/31 13:53 |
回复: ricky [ricky] 版主 | 登录 |
有现成的dll函数,好像是pocket.dll,你在网上查查,我不记得了 |
B5层 发表时间: 09/01 09:11 |
回复: ilovepeace [ilovepeace] 论坛用户 | 登录 |
多谢多谢! |
B6层 发表时间: 09/01 09:24 |
回复: ilovepeace [ilovepeace] 论坛用户 | 登录 |
刚才在vc6.0+win2000平台下试了一下,参数SIO_RCVALL没通过: error C2065: 'SIO_RCVALL' : undeclared identifier 头文件<winsock2.h>已经引入,不得其解,再次求救! |
B7层 发表时间: 09/01 11:54 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号