自从Windows XP的Sevice Pack 2推出后 Raw Socket受到了SP2自带防火墙和系统的限制例如:     1:Raw Socket再不能发送TCP的原始数据包。2:Raw Socket不能够发送源地址不正确的UDP数据包。为了使部分使用Raw Socket的部分程序继续能够在Window XP SP2下正常工作,我把这些工作提到了内核层,把它封装成一个DLL,突破微软对WinXP SP2的Raw Socket限制。但是目前只是测试阶段,所以可能还有缺陷,我会虚心接受批评,努力去完善的,希望大家帮忙测试,但是程序是内核级的,大家测试的时候要谨慎一点.目前只是支持发包,收包可以沿用winsock的raw socket,因为微软没有对raw socket进行限制,但是raw socket 在各个系统的收包一直不大理想,所以我会继续开发本Dll的收包函数,为kingsocket增加更多功能。下载地址:http://www.kingsocket.com(网页是赶出来的,所以很呆板)

解决方案 »

  1.   

    SP2居然有这么变态啊?难怪我发包的时候老是SOCKET_ERROR
      

  2.   

    关掉也不行的,防火墙只是过滤一部分但是系统限制了这两点1:Raw Socket再不能发送TCP的原始数据包。2:Raw Socket不能够发送源地址不正确的UDP数据包。
      

  3.   


    空间服务商的供电有问题,UPS设备不足,有时候访问不了。天哦~~~~
      

  4.   

    up,其SP2真的很低级,不用不就行了
      

  5.   

    the software can do what?
      

  6.   

    高人, 进来看看我的问题.http://community.csdn.net/Expert/topic/3552/3552164.xml?temp=.1450464
      

  7.   

    小弟用逃课的时间开发了一个防火墙开发包,希望大家关注,以前发布过一次,那次是以WinXP SP2下
    RAW Socket的使用突破为主要功能,现在这次是以滤包功能为主要功能,Win SP2 Raw Socket为附加
    功能。发布地址http://www.kingsocket.com以下是正文(部分功能还在更新中)
    随着电脑的普及,计算机安全越来越成为一个焦点话题,尤其是计算机网络安全技术更为重要
    网络防火墙是计算机网络安全的一大产品,鉴于Windows下网络防火墙开发困难,我们把底层
    的NDIS技术经过长期的研究开发并封装成一个供上层调用的DLL,.使Windows下的网络滤
    包技术不在成为难题.
    功能特点:1.运行平台
    Windows2000,WindowsXP  (WindowsNT,Windows2003兼容性未经测试)
                           (Win9x正在加紧开发)2.安装
    本开发包安装快速,简单, 不用重启,不会弹出数据签名等东西,一切都可以瞬间完成,几乎
    是绿色安装.3.滤包功能(1)链路层
    可以滤来源MAC地址,滤目的MAC地址
       
    (2)网络层
    可以滤来源IP地址,目的IP地址,滤上层协议(ICMP,IGMP,TCP,UDP)(3)传输层
    可以滤TCP和UDP协议的来源端口,目的端口.4.日志
    能够返回经过网络的所有数据包,包括被拦截和放行的,为用户作进一步滤包判断提供信
    息.使用说明1.开发包包含以下文件
    1.KingSocket.sys    驱动文件
    2.KingSocketDll.dll  动态链接库文件
    3.KingSocketDll.lib  动态链接库导入文件
    4.KingSocket.h     动态链接库调用头文件
    5.FireWall.exe      测试文件
    6.使用说明.doc     本开发库的说明文件
    2.使用步骤1. 先把KingSocket.sys拷贝到X:\Windows\System32或者X:\WinNT\System32下面.
    2. #include<KingSocket.h>
    3. 导入KingsocketDll.lib
    4. 拷贝KingSocketDll.dll到当前目录
    5. 声明CKingSocket实例2. 函数详解bool SocketInit(void)
    功能:初始化KingSocket,每个KingSocket的必须程序。int SendTo(const char* buf, int len, int flags, const struct sockaddr* to, int tolen);
    功能:附加功能,目前还在兼容性测试中,发送原始数据包到网络中,并不受WinXP SP2限制中。int Bind(const struct sockaddr* name , int namelen);
    功能:绑定一个地址来发送原始数据包,跟SendTo起作用。bool GetLog(LOGDISPLAY,PVOID);
    功能:将包头日志一个一个地通过回调函数返回来,供程序进一步使用。(详见测试文件源代码)bool SetRuleType(int iType);
    功能:设置滤包方式如果iType为BLOCK,则堵塞全部数据包,除了控管规则的
     如果iType为PASS,则通过全部数据包,除了控管规则的bool SocketUnLoad(void);
    功能:保留,用于卸载驱动,建议用户不使用。#define SENDRULE                    0
    #define RECVRULE                    1
    #define RELERULE                    2bool SetRule(_MAC_RULE MacRule,bool bAddr);
    功能:设置过滤物理帧控管规则根据物理帧结构
    typedef struct _MAC_RULE
    {
      BYTE Mac[6];
      BYTE Type; //SENDRULE关注程序发送,在这里也就是关注发送数据包的目的地址过滤
    //RECVRULE关注程序接收,在这里就是关注接受数据包的来源地址
    //RELERULE释放控管进程所有的规则
    }*PMAC_RULE;
    如果想对某单个控管进程进行删除,可以填充填写改特定的结构,然后
    SetRule(MacRule,FALSE);以下函数说明参见上面过滤物理帧的说明
    bool SetRule(_IP_RULE IpRule,bool bAddr);
    功能:设置过滤IP分组控管规则,ProType结构成员可以填充协议的类型来滤调整个协议bool SetRule(_UDP_RULE UdpRule,bool bAddr);
    功能:设置IP分组控管规则结构bool SetRule(_TCP_RULE TcpRule,bool bAddr);
    功能:设置TCP分组控管规则结构bool SetRule(_ICMP_RULE IcmpRule,bool bAddr);
    功能:设置ICMP分组控管规则结构,Type是根据ICMP的类型进行滤包