优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

VC418 基于Windows平台下的个人防火墙设计VC++

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

首先利用Winsock 2 SPI技术建立winsock钩子用来截获winsock调用从而拦截TCP/IP封包,并做相应处理。然后设置控管规则访问控制,通过控管规则的检查认证,确定socket连接是否允许通过。最后是TCP/IP的封包分析,利用TIP/IP的封包结构分析截获的数据,提取需要的数据。这些封装在DLL里面。
EXE模块主要是用户页面的制作。这里介绍与DLL通信的地方。EXE中与DLL直接通信的小模块主要有两个。一个是完成应用程序初始化的类CPropertyApp,它继承自CWinApp,是EXE的入口,其实里面封装了WinMain函数;另一个是主窗口模块CMainFrame,这个主窗口并不是EXE显示出来的那个属性页窗口,而是一个隐藏的窗口,它继承自CMrameWnd,是一个无模式窗口,他隐藏显示,充当接受机,用来接受DLL及其他模块发送过来的消息,然后对消息进行相应的处理。
〖本文来自:计算机毕业网  〗
传输服务提供者又分为基础服务提供者和分层服务提供者。基础服务提供者和分层服务提供者都开放相同的SPI接口,所不同的是基础服务提供者位于提供者的最底层。所以编写基础服务提供者和分层服务提供者基本相同。但安装是却需要将基础服务提供者安装在服务提供者加载顺序链的最底端,而分层服务提供者则根据需要分布在顺序链的中间。

[资料来源:http://think58.com]

3 开发平台与开发工具
开发平台如题说明,以Windows平台为主,重点讨论开发工具的选择。
根据不同的工程选择不同的开发工具,可以有效地提高工作效率。不同的开发工具各有各的优点同时又各有各的不足,在开发中要扬长避短。
目前常用的Windows开发工具有VS 5.0/6.0、VS.net(包括VB、BC、VFP、VJ、C#等一组开发工具)、delphi、C++ Builder,JBuilder、PB等。
在这些开发工具里面,VFP和PB一般用来专门开发数据库系统,它们具有灵活的数据库接口。 think58.com
[资料来源:http://THINK58.com]

5. 模块1.5:EXE设置DLL的工作模式,设置工作模式单独的函数,调用模块1.3读写控管规则模块得到控管规则数据,调用DLL的函数FloControl设置DLL的工作模式。
6. 模块2.1:DLL封包过滤模块,有分为3块,2.1.1一组Winsock 2SPI钩子函数C++源文件TcpipDog.h和TcpipDog.cpp;模块2.1.2根据控管规则判断是否可以通行的类CCheckAcl,C++源文件CheckAcl.h和CheckAcl.cpp;模块2.1.3对网络数据包进行分析的类CProtocolInfo,C++源文件ProtocolInfo.h和ProtocolInfo.cpp。
 模块2.1.1:服务提供者函数模块,入口函数WSPSartup,发送询问消息到EXE,由EXE提供询问界面函数QueryAccess。截获的8个服务提供者函数。设置工作模式、控管规则等设备工作接口函数FloControl。
 模块2.1.2:访问控管模块,通过检查工作模式和控管规则得到是否放行的函数GerAccessInfo。
 模块2.1.3:协议解析模块,得到协议信息处理函数GetProtocolInfo
7. 模块2.2:DLL更改控管规则模块,设置DLL控管规则数据SetAcl,设置控管规则m_Aclfile,设置工作模式m_iWorkMode。
8. 模块2.3:DLL更改工作模式模块,设置DLL工作模式函数SetWorkMode。 think58好,好think58

[资料来源:http://THINK58.com]

1. 控管规则记录结构
控管规则记录结构说明
(1) 规则编号字段是控管规则的唯一性编号。保留字段,没有使用。
(2) 应用程序名称及路径字段用来保持应用程序的名称和路径。
(3) 远端网络类型,数值的含义如下。
0:表示所有网络
1:局域网
2:约束的网络(自定义)
3:信任的网络(自定义)
4:自定义的网络(自定义)
(4) 管制动作,数值的含义如下。
0:放行
1:拒绝
(5) 进出方向,数值的含义如下。
0:出
1:入
2:双向
(6) 服务类型,数值的含义如下。
0:全部
1:TCP(端口为任意,可编辑)
2:UDP(端口为任意,可编辑)
3:FTP(端口为21,不可编辑)
4:TELNET(端口为23,不可编辑)
5:HTTP(端口为任意,可编辑)
6:NNTP(端口为119,不可编辑)
7:POP3(端口为110,不可编辑)
8:SMTP(端口为25,不可编辑)
(7) 服务端口,数值的含义如下。
0:表示全部 内容来自think58

[来源:http://think58.com]

//没有匹配的控管规则:执行询问
//有完全匹配的控管规则:按照控管规则的控管动作返回
//没有完全匹配和控管规则但是有与进程匹配的控管规则:
//按最后一条与进程匹配的控管规则的管制动作取反
COMPARE:
 if(!IsOne) iIndex ++;
 iIndex = FindAcl(m_sProcessName, iIndex);
 if(iIndex >= m_AclFile.mAclHeader.ulAclCount)
 { if(IsOne)
  { if(m_bIsWin9x)
   { if(!QueryAccess())
     return XF_DENY;
    else
     return XF_PASS;
   }
   else
    return XF_QUERY;
  }
  else
  { if(bAction == ACL_ACTION_DENY)
    return XF_PASS;
   else
    return XF_DENY;
  }
 }
 if(IsOne) IsOne = FALSE;
 bAction = m_AclFile.mpAcl[iIndex].bAction;

copyright think58 [来源:http://www.think58.com]

[来源:http://think58.com]

 if(m_AclFile.mpAcl[iIndex].bDirection!=ACL_DIRECTION_IN_OUT&&mSession->bDirection!=m_AclFile.mpAcl[iIndex].bDirection)
   goto COMPARE;
 if(m_AclFile.mpAcl[iIndex].bServiceType!=ACL_SERVICE_TYPE_ALL&&mSession->bProtocol!=m_AclFile.mpAcl[iIndex].bServiceType)
   goto COMPARE;
 if(m_AclFile.mpAcl[iIndex].bRemoteNetType!=ACL_NET_TYPE_ALL&&FindIP(mSession->ulRemoteIP)!=m_AclFile.mpAcl[iIndex].bRemoteNetType)〖本文来自:计算机毕业网  〗
   goto COMPARE;
 if(m_AclFile.mpAcl[iIndex].uiServicePort!=ACL_SERVICE_PORT_ALL&&mSession->uiPort!=m_AclFile.mpAcl[iIndex].uiServicePort)
   goto COMPARE;
 if(m_AclFile.mpAcl[iIndex].bAction == ACL_ACTION_DENY)
  return XF_DENY;
 return XF_PASS;
}
think58 [资料来源:www.THINK58.com]