首页
社区
课程
招聘
[旧帖] vc原始套接字抓包时无法上网 0.00雪花
发表于: 2010-5-26 15:13 4248

[旧帖] vc原始套接字抓包时无法上网 0.00雪花

2010-5-26 15:13
4248


请教大牛:
     当使用原始套接字抓包时,把网卡设置为混杂模式,此时无法上网,我代码一段一段的注视发现就是在设置混杂模式的时候出的问题。哪位大牛指点一下。多谢

google多日不得其解。



int err;
char name[100];
hostent *pHostent;
int port=8310;
SOCKADDR_IN sockaddr;
m_RawSock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
if(m_RawSock==INVALID_SOCKET)
{
return WSAGetLastError(); //socket创建失败
}

err=gethostname(name,100);
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //取本机用户名失败
}

pHostent=gethostbyname (name);

sockaddr.sin_family=AF_INET;
sockaddr.sin_port=htons(port);
memcpy(&sockaddr.sin_addr.s_addr,pHostent->h_addr_list[0],
pHostent->h_length);

//free(pHostent);

err=bind(m_RawSock,(SOCKADDR *)&sockaddr,sizeof(sockaddr));//绑定
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //取本机用户名失败
}
BOOL bOptval=TRUE;

//设置套节字选项
setsockopt(m_RawSock,SOL_SOCKET,SO_REUSEADDR,(char*)&bOptval,sizeof(bOptval));
err=setsockopt(m_RawSock,IPPROTO_IP,IP_HDRINCL,(char*)&bOptval, //IP_HDRINCL该选项使之能操作IP头
sizeof(bOptval));
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //设置套节字选项失败
}

//把网卡置于混杂模式。获取IO操作的相关信息

DWORD dwBufferLen[10] ;
DWORD dwBufferInLen = 1 ;
DWORD dwBytesReturned = 0 ;
err=WSAIoctl (
m_RawSock,
SIO_RCVALL, //设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
//SOCK_RAW,
&dwBufferInLen,
sizeof(dwBufferInLen),
&dwBufferLen,
sizeof(dwBufferLen),
&dwBytesReturned,
NULL,
NULL
);//最后两参数设置非阻塞


if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //设置套节字选项失败
}
return 0;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 114
活跃值: (70)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
vc试了下,
完全可以啊

你的代码基础上加了为编译及运行必须的
  WORD   wVer;
  WSADATA   wsaData;
  wVer=MAKEWORD(2,2);   
  err=WSAStartup(wVer,&wsaData);

以及
  if(err==SOCKET_ERROR)
  {
    return WSAGetLastError(); //ÉèÖÃÌ×½Ú×ÖÑ¡Ïîʧ°Ü
  }

// add begin
  char cbuf[1001]={0};
  int recvlen=0;
  for (int i=0;i<100;i++)
  {
      recvlen=recv(m_RawSock, cbuf, 1000,0);
      if (recvlen>0)
      {
          ;
      }
  }
//add end

可以看到抓到的数据。
2010-5-27 13:17
0
游客
登录 | 注册 方可回帖
返回
//