关于Win Filter Api的使用方法修正

Filter 的使用参考

http://blog.csdn.net/amh/archive/2004/11/09/173560.aspx

经过实践发现,其文中,功能看似达到了,但有一部分是不正确的.

 DWORD err = NO_ERROR;

 // 一个创建网络包过滤接口
    INTERFACE_HANDLE hInterface;
    PfCreateInterface(0,
                     PF_ACTION_FORWARD,//PF_ACTION_DROP,原文中使用了屏蔽所有包
                     PF_ACTION_FORWARD,//PF_ACTION_DROP,原文中使用了屏蔽所有包

                     //如果屏蔽所有,那么看似屏蔽成功了,但程序运行之后,后面的过滤规则的设定也就没有任何意义了;
                     FALSE,
                     TRUE,
                     &hInterface);

    // 绑定需要网络包过滤的IP地址
    BYTE localIp[] = {xx,xx,xx,xx};
 BYTE DestIp[] = {xx,xx,xx,xx};
    PfBindInterfaceToIPAddress(hInterface, PF_IPV4, localIp);
    // 现在我们开始过滤HTTP协议的的接口
    FILTER_HANDLE fHandle;
    // 填充过滤包的规则结构
    PF_FILTER_DESCRIPTOR inFilter;
    inFilter.dwFilterFlags = FD_FLAGS_NOSYN; //一直添这个值
    inFilter.dwRule = 0; //一直添这个值
    inFilter.pfatType = PF_IPV4; //用 ipV4 地址
    inFilter.SrcAddr = localIp; //设置本地IP地址
    inFilter.SrcMask = (PBYTE)"/xff/xff/xff/xff"; //设置本地子网掩码

    inFilter.wSrcPort = FILTER_TCPUDP_PORT_ANY; //任意来源端口
    inFilter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY;


   inFilter.DstAddr = DestIp; 
   inFilter.DstMask = (PBYTE)"/xff/xff/xff/xff";
   inFilter.wDstPort = 80; 
   inFilter.wDstPortHighRange = 80;
   inFilter.fLateBound = LB_SRC_ADDR_USE_DSTADDR_FLAG|LB_DST_ADDR_USE_DSTADDR_FLAG;

    inFilter.dwProtocol = FILTER_PROTO_ANY;

    // 加入一个过滤接口,加在包过滤的出口上面,在原文中加到了入口上,所以是不会有效果的

   // OutFilter才是关于本机的包过滤规则的正确放置位置
    PfAddFiltersToInterface(hInterface, 0, NULL,1, &inFilter,  &fHandle);


 if(err != NO_ERROR)
 {
  TRACE("PfAddFiltersToInterface is Wrong/n");
  return ;
 }
    //在这个地方弹出对话框中断程序,测试是否运行成功

MessageBox("Filter Enabled!");


    // 移除过滤接口
    PfRemoveFilterHandles(hInterface, 1, &fHandle);
    PfUnBindInterface(hInterface);
    PfDeleteInterface(hInterface);

希望对大家能够有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值