关于Win Filter Api的使用方法修正
2005-04-08 18:15
1061 查看
Filter 的使用参考
http://blog.csdn.net/amh/archive/2004/11/09/173560.aspx
经过实践发现,其文中,功能看似达到了,但有一部分是不正确的.
DWORD err = NO_ERROR;
// 一个创建网络包过滤接口
INTERFACE_HANDLE hInterface;
PfCreateInterface(0,
PF_ACTION_FORWARD,//PF_ACTION_DROP,原文中使用了屏蔽所有包
PF_ACTION_FORWARD,//PF_ACTION_DROP,原文中使用了屏蔽所有包
//如果屏蔽所有,那么看似屏蔽成功了,但程序运行之后,后面的过滤规则的设定也就没有任何意义了;
FALSE,
TRUE,
&hInterface);
// 绑定需要网络包过滤的IP地址
BYTE localIp[] = {xx,xx,xx,xx};
BYTE DestIp[] = {xx,xx,xx,xx};
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 = (PBYTE)"/xff/xff/xff/xff"; //设置本地子网掩码
inFilter.wSrcPort = FILTER_TCPUDP_PORT_ANY; //任意来源端口
inFilter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY;
inFilter.DstAddr = DestIp;
inFilter.DstMask = (PBYTE)"/xff/xff/xff/xff";
inFilter.wDstPort = 80;
inFilter.wDstPortHighRange = 80;
inFilter.fLateBound = LB_SRC_ADDR_USE_DSTADDR_FLAG|LB_DST_ADDR_USE_DSTADDR_FLAG;
inFilter.dwProtocol = FILTER_PROTO_ANY;
// 加入一个过滤接口,加在包过滤的出口上面,在原文中加到了入口上,所以是不会有效果的
// OutFilter才是关于本机的包过滤规则的正确放置位置
PfAddFiltersToInterface(hInterface, 0, NULL,1, &inFilter, &fHandle);
if(err != NO_ERROR)
{
TRACE("PfAddFiltersToInterface is Wrong/n");
return ;
}
//在这个地方弹出对话框中断程序,测试是否运行成功
MessageBox("Filter Enabled!");
// 移除过滤接口
PfRemoveFilterHandles(hInterface, 1, &fHandle);
PfUnBindInterface(hInterface);
PfDeleteInterface(hInterface);
希望对大家能够有所帮助!
http://blog.csdn.net/amh/archive/2004/11/09/173560.aspx
经过实践发现,其文中,功能看似达到了,但有一部分是不正确的.
DWORD err = NO_ERROR;
// 一个创建网络包过滤接口
INTERFACE_HANDLE hInterface;
PfCreateInterface(0,
PF_ACTION_FORWARD,//PF_ACTION_DROP,原文中使用了屏蔽所有包
PF_ACTION_FORWARD,//PF_ACTION_DROP,原文中使用了屏蔽所有包
//如果屏蔽所有,那么看似屏蔽成功了,但程序运行之后,后面的过滤规则的设定也就没有任何意义了;
FALSE,
TRUE,
&hInterface);
// 绑定需要网络包过滤的IP地址
BYTE localIp[] = {xx,xx,xx,xx};
BYTE DestIp[] = {xx,xx,xx,xx};
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 = (PBYTE)"/xff/xff/xff/xff"; //设置本地子网掩码
inFilter.wSrcPort = FILTER_TCPUDP_PORT_ANY; //任意来源端口
inFilter.wSrcPortHighRange = FILTER_TCPUDP_PORT_ANY;
inFilter.DstAddr = DestIp;
inFilter.DstMask = (PBYTE)"/xff/xff/xff/xff";
inFilter.wDstPort = 80;
inFilter.wDstPortHighRange = 80;
inFilter.fLateBound = LB_SRC_ADDR_USE_DSTADDR_FLAG|LB_DST_ADDR_USE_DSTADDR_FLAG;
inFilter.dwProtocol = FILTER_PROTO_ANY;
// 加入一个过滤接口,加在包过滤的出口上面,在原文中加到了入口上,所以是不会有效果的
// OutFilter才是关于本机的包过滤规则的正确放置位置
PfAddFiltersToInterface(hInterface, 0, NULL,1, &inFilter, &fHandle);
if(err != NO_ERROR)
{
TRACE("PfAddFiltersToInterface is Wrong/n");
return ;
}
//在这个地方弹出对话框中断程序,测试是否运行成功
MessageBox("Filter Enabled!");
// 移除过滤接口
PfRemoveFilterHandles(hInterface, 1, &fHandle);
PfUnBindInterface(hInterface);
PfDeleteInterface(hInterface);
希望对大家能够有所帮助!
相关文章推荐
- 关于struts2 API 中InputConfig 内 methodName 和resultName的使用方法
- (应用程序无法正常启动0xc0000142) 关于win10周年版更新后无法正常使用vc6.0问题的解决方法
- JDK_API中关于String的几个方法的使用
- 【MySql APIs】很完整的关于怎么用各种方法连接Mysql数据库,和使用API来操作Mysql数据库的资料
- C++6.0(应用程序无法正常启动0xc0000142) 关于win10周年版更新后无法正常使用vc6.0问题的解决方法
- 关于struts2 API 中InputConfig 内 methodName 和resultName的使用方法
- 应用程序无法正常启动0xc0000142) 关于win10周年版更新后无法正常使用vc6.0问题的解决方法
- (应用程序无法正常启动0xc0000142) 关于win10周年版更新后无法正常使用vc6.0问题的解决方法
- htc a3380关于因使用google map api,导致apk程序安装时提示 程序未安装 的解决方法
- 时代互联 域名注册查询接口api的使用 (w3Sockets)(这篇文章,关于是放到C:\WINDOWS或者是C:\WINDOWS\system32要亲自试试,附带在 server 2008 R2下无法运行的解决方法)
- 关于丢失 api-ms-win-crt-runtimel1-1-0.dll的解决方法
- 关于百度API的使用方法
- (应用程序无法正常启动0xc0000142) 关于win10周年版更新后无法正常使用vc6.0问题的解决方法
- API 23及之后版本关于用android studio 中LocationManager的方法使用
- 【百度地图API】百度API卫星图使用方法和卫星图对比工具
- 关于在vue 中使用百度ueEditor编辑器的方法实例代码
- 使用J2SE API读取Properties文件的六种方法
- 关于Delphi中预编译指令的使用方法
- Cocos2d-x 3.0final -关于V3中CallFunc::create的新的使用方法
- 教你免费使用微软Win10版DVD播放器应用的方法