自从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(网页是赶出来的,所以很呆板)
空间服务商的供电有问题,UPS设备不足,有时候访问不了。天哦~~~~
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的类型进行滤包