急等,最好能提供源码。谢谢

解决方案 »

  1.   

    http://dev.csdn.net/develop/article/26/26721.shtm
      

  2.   

    codeproject上有两个例子,一个是使用包过滤驱动,一个使用包过滤API
      

  3.   

    牧童的回帖上说的我看过了,我只是想用Windows2000自带的包过滤接口来完成过滤。不想用钩子之类的东东。还是很谢谢你。
    偶像的黄昏:WinpCap好像只能截获数据包而不能阻塞数据包。它所截获的数据包只是一个拷贝,用来做数据包的分析是很不错,但是不能完成过滤数据包的功能。】gracezhu:请你把网址告诉我吧,谢谢!
      

  4.   

    M$不建议使用这种方式建立防火墙,它在TCP/IP堆栈中的位置太高了。
      

  5.   

    比较彻底的还是使用NDIS。不过据我所知Win2k自带的截获包的方法就是上面牧童提到的这个东西,filter-kook driver。
      

  6.   

    winpcap稍作修改就可以达到你的要求的。
      

  7.   

    利用操作系统提供的API编写防火墙 
    关 键 字:API,防火墙,iphelp 
    本文章自 2004-1-17 添加到 C++ Builder 研究 网站以来,已被阅读 955 次。 --------------------------------------------------------------------------------
     
    利用操作系统提供的API编写防火墙
    作者: zzwinner ,如转载请保证本文档的完整性,并注明出处。
    欢迎光临 C++ Builder 研究,http://www.ccrun.com/doc/go.asp?id=593
    /*
    利用操作系统提供的API编写防火墙.
    该程序涉及到的API说明请访问微软的MSDN Library
    代码在C++ Builder 5编译通过
    如果您想和我交流请email:[email protected]
    */
    #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;
    }  
      

  8.   

    IP Filter-Hook Driver的实现方法http://www.vckbase.com/document/viewdoc/?id=1067
      

  9.   

    呵呵,这些文章我都查找过并粗粗的阅读过。
    四不象开始列出的那段程序代码我编译测试过,好像不能起到作用,不知道为什么。
    另外。我找到了CodeProject,谢谢。
    会思考的草?winpcap要怎么修改呢?有没有相关的程序啊?有的话,请发给我,谢谢。
    [email protected]
      

  10.   

    to: woweijunge(花弄影) xfocus的论坛上已经有人告诉你了,呵呵
      

  11.   

    http://www.codeproject.com/tools/firewallpapi.asp
      

  12.   

    winpcap是不能过滤数据包的它所能做的只是获得数据包的一份拷贝而已
      

  13.   

    四不象,你也是焦点的会员?
    谢谢大家的建议。
    COdeRoject上的我也找到了。早知到大家这么热情,我的分就应该多给点。
    只可惜啊,所以分少就请大家原谅