研究一下网上的相关文章自己又实践了下,走了一些歪路,不过最终在xp下可以用
环境:VC6.0 ,XP系统
关键步骤:
1.设置Socket:socket(AF_INET,SOCK_RAW,IPPROTO_IP)
2.bind(...)地址为本机地址,端口随便,协议簇:AF_INET
3.设置抓取的协议类型:
可以用 ioctlsocket(sock,SIO_RCVALL, &dwLen);
或者 WSAIoctl( sock, SIO_RCVALL ,......)可能会出现 SIO_RCVALL未定义
加人如下代码在头文件中:
// Copyright (C) Microsoft Corporation, 1996-1999
#if _MSC_VER > 1000
#pragma once
#endif
/* Argument structure for SIO_KEEPALIVE_VALS */
struct tcp_keepalive {
u_long onoff;
u_long keepalivetime;
u_long keepaliveinterval;
};
// New WSAIoctl Options
#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
#define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2)
#define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3)
#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4)
#define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5)
#define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6)
#define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7)
#define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8)
#define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9)
#define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10)
#define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11)
4.接受用recv就ok了
5.其他的就是IP包分析了,定义不同的协议头,分析就行了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25897606/viewspace-704312/
,如需转载,请注明出处,否则将追究法律责任。