最近在研究NDIS,所以看了Windows防火墙与网络封包截获技术这本书,
里面有个源程序叫xpassthru的。可以实现调试输出接收到包的诸如大小,长度等信息。现在我想让它
输出源IP和目标IP以及端口,如果的TCP包 还想知道里面详细的内容,诸如GET。。一类的。
但是现在 我用
NdisQueryPacket(packet,&PhysicalBufferCount,&BufferCount,&FirstBuffer,&TotalPacketLength);
获得了FirstBuffer。我定义了以太头,IP头,TCP头的结构体,然后:
iphd=(PIP_HEADER)((PCHAR)FirstBuffer+14);//获得IP地址,14是以太头长度
iphdlen=(iphd->iph_verlen&0xf)*4;//计算IP头长度
tcphd=(PTCP_HEADER)((PCHAR)iphd+iphdlen);//获得TCP地址
这样获得各部分的地址。
接着用Dbgprint();输出
不过这样输出的东西好象完全不对啊??这是怎么回事??
或者是我FirstBuffer完全没找对地方??或者是还要进行移位处理??
如果是要移位处理的话应该怎么做?请诸位不吝指教 感激不尽~~~~