当前位置: 技术问答>linux和unix
关于LINUX SNIFFER的问题
来源: 互联网 发布时间:2017-01-21
本文导语: 我WINDOWS下的SNIFFER 移植到LINUX下遇到点问题 //设置套节字选项 if (SOCKET_ERROR == setsockopt(m_RawSock,SOL_SOCKET,SO_REUSEADDR,(char *)&bOptval,sizeof(bOptval))) { return FALSE; } //IP_HDRINCL该选项使之...
我WINDOWS下的SNIFFER 移植到LINUX下遇到点问题
第三句话,在LINUX下怎么设置的?
我需要接受所有包,并且还要分析,分析我知道,但是不知道LINUX需不需要设置下 像WINDOWS一样 设置下才能获取所有的数据包!!!
//设置套节字选项
if (SOCKET_ERROR == setsockopt(m_RawSock,SOL_SOCKET,SO_REUSEADDR,(char *)&bOptval,sizeof(bOptval)))
{
return FALSE;
}
//IP_HDRINCL该选项使之能操作IP头
if (SOCKET_ERROR == setsockopt(m_RawSock,IPPROTO_IP,IP_HDRINCL,(char *)&bOptval,sizeof(bOptval)))
{
return FALSE;
}
//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
WSAIoctl (m_RawSock,SIO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL);
第三句话,在LINUX下怎么设置的?
我需要接受所有包,并且还要分析,分析我知道,但是不知道LINUX需不需要设置下 像WINDOWS一样 设置下才能获取所有的数据包!!!
|
WSAIoctl想想对应的linux是ioctl
应该是设置网卡的混杂模式
刚翻了下linux下的sniffer
ifr.ifr_flags|=IFF_PROMISC;
if(ioctl(sock,SIOCSIFFLAGS,&ifr)==-1){
有这么两句,你看看是不是你要的
这种移植方面的建议lz,不仅是win,linux方面也要了解
应该是设置网卡的混杂模式
刚翻了下linux下的sniffer
ifr.ifr_flags|=IFF_PROMISC;
if(ioctl(sock,SIOCSIFFLAGS,&ifr)==-1){
有这么两句,你看看是不是你要的
这种移植方面的建议lz,不仅是win,linux方面也要了解
|
网络编程卷一:P627。