• IP包过滤


    IP包过滤
    (zzwinner发表于2004-1-12 23:56:18)
    /*
    利用操作系统提供的API编写防火墙.
    该程序涉及到的API说明请访问微软的MSDN Library
    代码在C++ Builder 5编译通过

    */

    #pragma hdrstop
    #include "windows.h"
    #include "Fltdefs.h"
    //需要加载"iphlpapi.lib"

    #pragma argsused
    int main(int argc, char* argv[])
    {
       //一个创建网络包过滤接口
       INTERFACE_HANDLE hInterface;
       PfCreateInterface(0,
          PF_ACTION_DROP,//PF_ACTION_FORWARD,
          PF_ACTION_DROP,//PF_ACTION_FORWARD,
          FALSE,
          TRUE,
          &hInterface);
      
      
       //绑定需要网络包过滤的IP地址
       BYTE localIp[] = {192,168,0,2};
       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 = "\xff\xff\xff\xff"; //设置本地子网掩码
       inFilter.wSrcPort = FILTER_TCPUDP_PORT_ANY; //任意来源端口
       inFilter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY;
       inFilter.DstAddr = 0; //任意目标地址
       inFilter.DstMask = 0;
       inFilter.wDstPort = 80; //目标端口 80(http 服务)
       inFilter.wDstPortHighRange = 80;
       inFilter.dwProtocol = FILTER_PROTO_TCP; // 过滤的协议
      
       //加入一个过滤接口
       PfAddFiltersToInterface(hInterface, 1, &inFilter, 0, NULL, &fHandle);
       //请在这设置一个调试断点,然后看看你的IE是否不能访问WEB页. :)
      
       //移出过滤接口
       PfRemoveFilterHandles(hInterface, 1, &fHandle);
      
       PfUnBindInterface(hInterface);
       PfDeleteInterface(hInterface);
      
       return 0;
    }

    最新评论 [发表评论]  查看所有评论 推荐给好友 打印

    介绍太简单,应该写多一点! ( tongtkk 发表于 2004-3-1 0:18:00)

    把上述代码封装到一个类中是不是能好一点。 ( glacierboy 发表于 2004-1-30 16:26:00)

    此文章来源于:http://www.codeproject.com/managedcpp/packetfilteringnet.asp ( freedk 发表于 2004-1-13 10:09:00)

    .......................................................
    More...

  • 相关阅读:
    迭代器概念与traits编程技法
    C++模板的特化与偏特化
    c++ operator关键字
    cookie-小总结吧
    ping
    git
    setTimeout()基础/setInterval()基础
    SASS
    命令行编译sass
    sublime添加sass编译
  • 原文地址:https://www.cnblogs.com/niuniu502/p/629252.html
Copyright © 2020-2023  润新知