过滤一些规定的地址,如不能用IE访问www.abc.com或不能用其他的什么软件访问某某地址.好象要用到IP包过滤和winsocket API等相关知识.本人基础浅薄,希望大家能帮忙,感谢!

解决方案 »

  1.   

    不是啊。给你两种方法:1、设置分级审查。2:直接判断IE地址栏内的内容,给你一个源码:
    http://www.delphibox.com/article.asp?articleid=1030
      

  2.   

    一般firewall的实现,都是通过网络层与传输层结合起来进来过滤的。
    网络层通过源目IP地址进行过滤,
    而传输层通过固定协议的内容及特点进行过滤的。
    如可以对HTPP协议进行URL过滤。
    推荐你看费尔防火墙1.0的书,先了解一下防火墙技术
      

  3.   

    Windows Sockets采用SPI的编程接口,应用程序调用的Socket API函数调用SPI服务程序来完成网络操作,SPI可以分很多层,可以开发一个基础服务提供者接口程序就是最下面一层的SPI程序,所有的应用程序操作Sockets最终都是提交到这个服务程序上的,然后我们自己做操作来进行过滤或者记录,最后再调用系统本身的基础服务
      Windows网络服务提供者信息在注册表的HKEY_LOCAL_MACHINE \ SYSTEM \ CurrenetControlSet \ Services \ Winsock2 \ Parameters \ Protocol_catalog9 \ Catalog_Entries分支下,在这个分支下有很多子分支,每个子分支都是一种网络服务提供者
      我们修改基础服务提供者就可以了,每个子分支下有一个二进制键PackedCatalogItem,些键值的前面512个字节保存的是此服务提供者的DLL文件径和名字。我们替换这个文件名,使它指向我们自己的dll。
      

  4.   

    求《Windows防火墙与网络封包截获技术》电子版.
    其他有关防火墙及其网络编程有关的书也行.
      

  5.   

    是截获还是阻塞?
    截获你可以用winpcap库,阻塞则是防火墙的知识了,spi,ndis,tdi,包过滤驱动这些。
      

  6.   

    使用SPI,费尔防火墙是C++写的
      

  7.   

    以下想创建了一个原始套接字(VC6.0环境),放在了一个按钮的单击事件中执行,也不知道合理不。
    void CWYJSocketDlg::OnOK() 
    {
      WSADATA WSAData;
      SOCKET sock;
      SOCKADDR_IN addr_in;
      bool flag;
      char FAR *LocalName;
      struct hostent *pHost;  WSAStartup(MAKEWORD(2,2),&WSAData);
      sock = socket(AF_INET,SOCK_RAW,IPPROTO_RAW);
      setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag));//Error
      gethostname((char*)LocalName,sizeof(LocalName)-1);
      pHost = gethostbyname((char*)LocalName);
      addr_in.sin_addr = *(in_addr*)pHost->h_addr_list[0];
      addr_in.sin_family = Af_INET;       //Error
      addr_in.sin_port = htons(57274);
      bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in));
      DWORD dwValue = 1;
      ioctlsocket(sock,SIO_RCVALL,&dwValue);   //Error
      WSAAsyncSelect(sock,GetSafeHwnd(),WM_SOCKET_MSG,FD_READ);    //Error
      CDialog::OnOK();
    }
    error C2065: 'IP_HDRINCL' : undeclared identifier
    error C2065: 'Af_INET' : undeclared identifier
    error C2065: 'SIO_RCVALL' : undeclared identifier
    error C2065: 'WM_SOCKET_MSG' : undeclared identifier
    这是怎么回事,是否是因为没包含某个头文件所致。
      

  8.   

    http://www.vckbase.com/document/viewdoc/?id=1167
    http://www.vckbase.com/document/listdoc.asp?mclsid=17&sclsid=1711