- #pragma comment (lib,"Ws2_32.lib")
- #include<winsock2.h>
- #include <Ws2tcpip.h>
- #include<stdio.h>
- #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)//0x80000000|0x18000000|0x00000001
- int main(void )
- {
- SOCKET SnifferSocket;
- WSADATA wsaData;
- int iFlag=WSAStartup(MAKEWORD(2,0),&wsaData);
- struct sockaddr_in sa;
- char receive[1024]={0};
- SnifferSocket = socket(AF_INET,SOCK_RAW,IPPROTO_IP);
- sa.sin_family = AF_INET;
- sa.sin_port = htons(7000);
- sa.sin_addr.s_addr=inet_addr("10.0.0.66");//inet_addr(10.0.0.66)
- bind(SnifferSocket,(struct sockaddr *)&sa, sizeof(sa)) ;
- DWORD dwBufferLen[10] ;
- DWORD dwBufferInLen = 1 ;
- DWORD dwBytesReturned = 0 ;
- WSAIoctl(
- SnifferSocket,//套接字的描述符;
- SIO_RCVALL,//待执行操作的控制代码,这里为SO_SSL_SET_VALIDATE_CERT_HOOK,表示将指针设置为证书验证指令;
- &dwBufferInLen, //是一个指向输入缓冲区的指针;
- sizeof(dwBufferInLen),//输入缓冲区大小;
- &dwBufferLen, //指向输出缓冲区的指针;
- sizeof(dwBufferLen),//输出缓冲区大小;
- &dwBytesReturned ,//指向真实的输出字节的数值;
- NULL , NULL //这里必须为NULL
- );
- memset(receive,0,1024);
- printf("memset over\n");
- recv( SnifferSocket, receive, sizeof(receive) , 0 ) ;
- printf("Recv Over...\n");
- for(int i=0;i<1024;i++)
- printf("%x",receive[i]);
- closesocket(SnifferSocket);
- WSACleanup();
- return 0;
- }
复制代码 |