阅读:1412回复:0
關於PacketFilterExtensionPtr NDIS过滤钩子驱动
看了很多大牛的文章。不過例子代碼裡面 都是根據IP頭裡面的信息
或者是TCP頭裡面的信息 來進行過濾。 不知道 能不能得到TCP頭後面的數據。 經過dump分析。在接受到數據包的時候 PacketLength 有時候會大於20(TCP Head的長度) 不過在每次數據發出的時候 PacketLength 始終等於20. 不知道能不能取得那些頭部後面的數據呢? 大牛指點一下 感激不盡。 PF_FORWARD_ACTION IpFilterHook( unsigned char *PacketHeader, unsigned char *Packet, unsigned int PacketLength, unsigned int RecvInterfaceIndex, unsigned int SendInterfaceIndex, IPAddr RecvLinkNextHop, IPAddr SendLinkNextHop ) { IPHEADER* IpHeader = (IPHEADER *)PacketHeader; if(IpHeader->proto == PROT_TCP) { tcp_head* tcp = (tcp_head*)Packet; if( SendInterfaceIndex != INVALID_PF_IF_INDEX) { // 數據發出的時候 DbgPrint("發出包 大小:%d 原端口:%d sum:%04x",PacketLength,htons(tcp->th_sport) ,tcp->th_sum); } else { /////////////////////////////////// // 接受到的数据包。 DbgPrint("更便接收包 大小:%d 目的端口:%d",PacketLength ,htons(tcp->th_dport) ); } } return PF_FORWARD; } |
|