
|
作者: 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号