d8lion
驱动牛犊
驱动牛犊
  • 注册日期2008-06-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1412回复:0

關於PacketFilterExtensionPtr NDIS过滤钩子驱动

楼主#
更多 发布于:2008-06-13 22:14
看了很多大牛的文章。不過例子代碼裡面 都是根據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;
}
游客

返回顶部