我要用winpcap提供的packet32提供的函数做了个网络监视的程序,监测网络中的arp包
比如
PacketReceivePacket(lpAdapter,lpPacket,TRUE)我怎么才能解析收到的数据呢??怎么知道他是不是arp包,lpAdapter指示本机网卡信息,而lpPacket是收到的信息,它是不是以太网的帧格式!!??
typedef struct _ehhdr
{
unsigned char DestMAC[6];
unsigned char SourceMAC[6];
unsigned short EthernetType;
}EHHDR, *PEHHDR; // 以太网结构typedef struct _PACKET {
HANDLE hEvent;
OVERLAPPED OverLapped;
PVOID Buffer;
UINT Length;
UINT ulBytesReceived;
BOOLEAN bIoComplete;
} PACKET, *LPPACKET; 用下面的代码为什么不行???
EHHDR * pointer;
pointer =(EHHDR * ) lpPacket->Buffer;
if (pointer->EthernetType==0x80f3)
printf("\n%02x",pointer->EthernetType);
比如
PacketReceivePacket(lpAdapter,lpPacket,TRUE)我怎么才能解析收到的数据呢??怎么知道他是不是arp包,lpAdapter指示本机网卡信息,而lpPacket是收到的信息,它是不是以太网的帧格式!!??
typedef struct _ehhdr
{
unsigned char DestMAC[6];
unsigned char SourceMAC[6];
unsigned short EthernetType;
}EHHDR, *PEHHDR; // 以太网结构typedef struct _PACKET {
HANDLE hEvent;
OVERLAPPED OverLapped;
PVOID Buffer;
UINT Length;
UINT ulBytesReceived;
BOOLEAN bIoComplete;
} PACKET, *LPPACKET; 用下面的代码为什么不行???
EHHDR * pointer;
pointer =(EHHDR * ) lpPacket->Buffer;
if (pointer->EthernetType==0x80f3)
printf("\n%02x",pointer->EthernetType);
解决方案 »
- mdi程序, 我需要在工具条和文档视图之间放置一个固定窗口,不知如何实现
- COM进程外服务器的原理是什么??
- [100分求助]如何使用VC编程获取网卡当前的状态
- 求一判断抖动程度的算法
- 请教透明窗体的滚动字幕闪烁的解决方案!!(分太少了,只要解决一定另送分!!)
- 我又来麻烦大家了,一个实现类似查看菜单下的“工具条”菜单的功能
- 状态栏怎样添加进度条
- VisualStudio (嗷~~~) 进来领分
- MFC中listctrl中一条信息的复制如何实现
- 读取CPU的温度或CPU风扇的转速还有BIOS里面的信息?
- vb中有if rs.state<>adStateClosed then rs.close end if请问在vc中怎么写这句话阿?
- 对CSDN的一点建议,敬请斑竹及站长过目
你可以参考一下
http://winpcap.polito.it/docs/man/html/index.html
教你很仔细的
是什么意思?0x80f3是代表什么网络类型?FT!如果你要玩sniffer,先去看《TCP/IP详解》第一卷和一堆RFC,把网络协议的基本知识先搞清楚!还有,winpcap是从libpcap发展过来的,所以你可以直接用libpcap的函数,我喜欢这种方式。
应该是0x0806吧,这才是ARP包
现在想向大家请教一下例如,发送一个包
BOOLEAN PacketSendPacket (LPADAPTER AdapterObject, LPPACKET lpPacket, BOOLEAN Sync) int pcap_sendpacket ( pcap_t * p, u_char * buf, int size)
发送一组包
INT PacketSendPackets (LPADAPTER AdapterObject, PVOID PacketBuff, ULONG Size, BOOLEAN Sync) u_int pcap_sendqueue_transmit (pcap_t *p, pcap_send_queue *queue, int sync)
接收包也有很多这方面的函数,是不是两者用于不同的操作系统平台啊?如果我是WINDOWS操作系统,想按照以太网格式(目的MAC,源MAC,类型,……),
那该用哪个函数呢?