智能包过滤防火墙文档.doc

上传人:jian****018 文档编号:9370133 上传时间:2020-04-05 格式:DOC 页数:58 大小:722KB
返回 下载 相关 举报
智能包过滤防火墙文档.doc_第1页
第1页 / 共58页
智能包过滤防火墙文档.doc_第2页
第2页 / 共58页
智能包过滤防火墙文档.doc_第3页
第3页 / 共58页
点击查看更多>>
资源描述
防火墙课程教学用智能包过滤防火墙说明 第一版 作 者:王涛&宋君易&宋健豪指导教师:康海燕1. 智能包过滤防火墙概述1.1什么是智能包过滤防火墙包过滤型防火墙的实现依据是利用网络数据传输中的分包技术。网络上的数据都是采用“包”的形式进行传输的,数据被划分成为一定大小的数据包,每一个数据包里具有包的特定信息,如数据的源IP地址、目的IP地址、TCP用DP源端口号和目标端口号等。防火墙对所有进出用户PC的数据包进行检查,通过读取数据包中的地址信息来判断这些“包”是否符合安全策略,一旦发现来自危险站点或者伪造的数据包,防火墙便会将这些数据丢弃处理。用户也可以根据实际情况制订灵活的过滤规则。包过滤技术的优点是简单方便,实现成本较低,配置对用户透明,运行效率也很高,在使用环境比较简单的情况下,可以较大程度上保证系统的安全。但是包过滤技术也有很明显的缺陷,首先包过滤技术是基于网络层来发挥作用,所以只能依据数据包的来源、目标和端口等包信息进行处理,而且无法识别建立在应用层的恶意侵入,如恶意的脚本程序或者病毒。动态包过滤防火墙采用动态设置包过滤规则的方法,解决静态包过滤的技术问题。这种技术就是包状态监测 (statefulInspection)。状态检测技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或删除规则。动态包过滤原理图如下1-1所示:图1-1 动态包过滤原理图1.2智能包过滤防火墙的结构 所有基于Windows操作系统的个人防火墙核心技术在于Windows操作系统下数据包拦截技术。包过滤系统工作在OSI模型中的网络层,可以根据数据包报头等信息来制定规则。 包过滤系统的结构图如图所示: 图1-2 包过滤系统结构图根据相应流程,进行代码实现及界面的设计。在本程序中,完成了根据规则监控网络程序、添加规则程序、删除规则程序、安装、卸载规则等模块,并集成在一个友好的界面中,使得程序更易于使用,方便演示。图1-3到图1-5显示的是程序的功能选择界面。图1-3 智能防火墙主界面图1-4 智能防火墙文件菜单图1-5 智能防火墙规则菜单2. 智能包过滤防火墙开发和运行环境2.1 开发语言 Microsoft visual C+2.2开发环境软件:Microsoft Visual C+ 6.0硬件: 表2.1所示的是代码编写与测试部分:电脑型号惠普4311s(VX603PA)屏幕尺寸13.3英寸 1366x768CPU型号Intel 酷睿2双核 P8700CPU主频2.53GHz内存容量2GB DDRIII 1333硬盘容量320GB 7200转,SATA显卡芯片ATI Mobility Radeon HD 4330操作系统Windows 7 Ultimate表2.1 电脑配置(代码编写与测试)表2.2所示的界面编辑部分: 电脑型号联想Y450A-TSI(LE)NBA球队版屏幕尺寸14英寸 1366x768CPU型号Intel 酷睿2双核 T6600CPU主频2.2GHz内存容量2GB DDR3 1066硬盘容量320GB 7200转,SATA显卡芯片NVIDIA GeForce GT 240M LE操作系统Windows XP SP2表2.2 电脑配置(界面编辑)2.3运行环境 软件:Microsoft .NET Framework 2.0,Windows XP系统或以上,Wpdpack 3.0 硬件: 内存:256M或以上 CPU:奔腾4或以上 硬盘:空间大于20G3.各部分设计及实现3.1包过滤防火墙部分3.1.1简要介绍在防火墙程序中,通过用户设置控制规则,对于网络数据包收发进行管理,最终达到监管网络传输内容的目的。根据用户设定规则,调用数据包截获接口,选择相应的数据包进行监控,控制传递数据的内容。人性化的界面设置提供外部导入规则设定,方便将习惯的规则移植到其他电脑使用。如图3-1所示,选择规则导入文件的选择框。图3-1 规则导入3.1.2设计方案智能防火墙主要任务:创建规则,防止恶意数据包的流入。智能防火墙其他任务:设置流量阈值,根据流量状况,智能选择策略进行流量监管。如图3-2包过滤防火墙系统流程描述图。图3-2 包过滤防火墙流程图3.1.3 实现及使用说明(1) 主界面如图3-3所示,主界面菜单栏分为文件、规则、帮助三项。任务栏图标从左至右依次是开启防火墙、停止防火墙、添加规则、删除规则的快捷图标。中部提供流量阈值输入框,应用流量阈值,实现智能流量控制。下部列表输出数据包流量信息包括源IP、目的IP、源端口、源掩码、协议及动作情况。图3-3包过滤防火墙(2) 文件菜单如图3-4所示,文件菜单下显示开始过滤、停止过滤、读取规则、存储规则及退出功能。开始过滤开启防火墙,根据配置规则进行数据包过滤。停止过滤停止防火墙,开放规则限制,数据包收发自由。读取规则进行规则文件的载入,方便用户更换电脑时的可移植性。存储规则进行相关配置规则信息,以便规则读取。退出防火墙功能,关闭防火墙的的网络监管并关闭界面。图3-4 智能防火墙文件菜单(3) 规则菜单如图3-6所示,规则菜单下显示增加规则、删除规则、安装规则、卸载规则功能。增加规则用于创建新的规则,根据用户的设定编写一条新的网络流量规则。如图3-5所示,增加规则对话框内提供原目的IP、端口设置,以及协议设定,动作设定等设置,来编写规则。图3-5 智能防火墙增加规则对话框删除规则用于删除已存在规则,根据用户需要删除不用的规则。安装规则用于规则的安装配置,为不想手动规则配置的用户进行规则的配置安装,直接可应用。卸载规则用于针对已安装的规则进行移除。图3-6 智能防火墙规则菜单(4) 帮助菜单如图3-7所示,帮助菜单下显示关于软件帮助功能。图3-7 智能防火墙帮助菜单3.2智能分析部分 如图3-8所示,界面中部有流量阈值输入框,根据端口流量情况可以规定不同的流量阈值,当端口流量高于流量阈值时,采取限制策略,除设定白名单规则外全部不允许访问;当端口流量低于流量阈值时,采取宽松策略,除设定黑名单外规则全部允许访问。图3-8 智能防火墙主界面防火墙会根据流经防火墙的流量与预先设定的阈值自动提示管理员切换或者由防火墙自行切换防洪墙策略,如图3-9所示。图3-9 智能防火墙访问控制列表4. 创新点本防火墙采用智能包过滤方案,不仅可以针对于用户设定的防火墙流量阈值进行检测,而且可以根据预设的规则由防火墙智能限制流经防火情的流量,并依据当前网络状况提出适合的流量限制策略。当流经防火墙的流量大于设定阈值时,防火墙会提示管理员采用限制策略,控制端口流量,除白名单外所有流量均禁止,防止恶意数据包的流入;当端口流量小于用户设定流量阈值的时候,提示采用宽松策略,开放端口流量,除黑名单外所有数据流量均放行,有效依据预设阈值动态调整网络流量,从而避免防火墙所带来的网络延迟,影响用户的正常使用。防火墙采用了驱动级流量过滤技术,通过钩子技术替换网卡驱动的动态链接库,在数据链路层与网络层之间过滤流量,有效地控制流量并且对计算机资源占用很小。防火墙界面简约友好化,降低用户使用的困难性。同时添加规则导入导出功能,极大地降低了防火墙的配置难度,同时方便用户在不同机器与网络环境中重复使用规则,减少配置时间,增强可移植性。5. 总结与展望经过防火墙使用测试,本防火墙可以实现包过滤功能,很好的拦截规则外数据包的传入。同时流量数据的监测情况一切正常,很好的记录下网络数据报的传输情况。从客户的角度出发,不仅方便用户的操作,同时也为用户制造了美观的界面。在未来的防火墙设计之中,将加强智能处理的方面,更加人性化的控制数据流量,让防火墙的设计变得简约而不简单。参考文献1 防火墙百科:http:/baike.baidu.com/view/3067.htm 2 智能包过滤防火墙的设计与实现:http:/www.doc88.com/p-973196720967.html 附 各部分源代码(1) 主界面/主界面程序代码/ FirewallAppView.cpp : implementation of the CFirewallAppView class#include stdafx.h#include FirewallApp.h#include mytext.h#include FirewallAppDoc.h#include FirewallAppView.h#include SockUtil.h#includeusing namespace std;#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CFirewallAppViewIMPLEMENT_DYNCREATE(CFirewallAppView, CFormView)BEGIN_MESSAGE_MAP(CFirewallAppView, CFormView)/AFX_MSG_MAP(CFirewallAppView)ON_WM_CLOSE()ON_WM_CANCELMODE()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CFormView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView:OnFilePrintPreview)END_MESSAGE_MAP()/ CFirewallAppView construction/destructionCFirewallAppView:CFirewallAppView(): CFormView(CFirewallAppView:IDD)/AFX_DATA_INIT(CFirewallAppView)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INIT/ TODO: add construction code hereCFirewallAppView:CFirewallAppView()void CFirewallAppView:DoDataExchange(CDataExchange* pDX)CFormView:DoDataExchange(pDX);/AFX_DATA_MAP(CFirewallAppView)DDX_Control(pDX, IDC_LIST1, m_rules);/AFX_DATA_MAPBOOL CFirewallAppView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CFormView:PreCreateWindow(cs);void CFirewallAppView:OnInitialUpdate()CFormView:OnInitialUpdate();GetParentFrame()-RecalcLayout();ResizeParentToFit();RECT rc;m_rules.GetClientRect(&rc);int width=rc.right-rc.left-110;m_rules.InsertColumn(0, 源IP,LVCFMT_LEFT , width/6, 0);m_rules.InsertColumn(1, 源掩码,LVCFMT_LEFT , width/6, 1);m_rules.InsertColumn(2, 源端口,LVCFMT_LEFT ,width/6, 2);m_rules.InsertColumn(3, 目的IP,LVCFMT_LEFT , width/6, 3);m_rules.InsertColumn(4, 目的掩码,LVCFMT_LEFT , width/6, 4);m_rules.InsertColumn(5, 目的端口,LVCFMT_LEFT , width/6, 5);m_rules.InsertColumn(6, 协议,LVCFMT_LEFT ,60, 6);m_rules.InsertColumn(7, 动作,LVCFMT_LEFT , 50, 7);m_rules.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);/ CFirewallAppView printingBOOL CFirewallAppView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CFirewallAppView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CFirewallAppView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printingvoid CFirewallAppView:OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)/ TODO: add customized printing code here/ CFirewallAppView diagnostics#ifdef _DEBUGvoid CFirewallAppView:AssertValid() constCFormView:AssertValid();void CFirewallAppView:Dump(CDumpContext& dc) constCFormView:Dump(dc);CFirewallAppDoc* CFirewallAppView:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CFirewallAppDoc);return (CFirewallAppDoc*)m_pDocument;#endif /_DEBUG/ CFirewallAppView message handlersvoid CFirewallAppView:UpdateList()CFirewallAppDoc *doc = GetDocument();/ Actualizo la tabla de reglasm_rules.DeleteAllItems();unsigned int i;for(i=0;inRules;i+)AddRuleToList(doc-rulesi.sourceIp, doc-rulesi.sourceMask, doc-rulesi.sourcePort, doc-rulesi.destinationIp, doc-rulesi.destinationMask, doc-rulesi.destinationPort, doc-rulesi.protocol, doc-rulesi.action);void CFirewallAppView:AddRuleToList(unsigned long srcIp, unsigned long srcMask, unsigned short srcPort, unsigned long dstIp, unsigned long dstMask, unsigned short dstPort, unsigned int protocol, int action)char ip16;char port6;LVITEM it;int pos;it.mask= LVIF_TEXT;it.iItem= m_rules.GetItemCount();it.iSubItem= 0;it.pszText= (srcIp = 0) ? All : IpToString(ip, srcIp);pos= m_rules.InsertItem(&it);cout;it.iItem= pos;it.iSubItem= 1;it.pszText= IpToString(ip, srcMask);m_rules.SetItem(&it);it.iItem= pos;it.iSubItem= 2;it.pszText= (srcPort = 0) ? All : itoa(srcPort, port, 10);m_rules.SetItem(&it);it.iItem= pos;it.iSubItem= 3;it.pszText= (dstIp = 0) ? All : IpToString(ip, dstIp);m_rules.SetItem(&it);it.iItem= pos;it.iSubItem= 4;it.pszText= IpToString(ip, dstMask);m_rules.SetItem(&it);it.iItem= pos;it.iSubItem = 5;it.pszText= (dstPort = 0) ? All : itoa(dstPort, port, 10);m_rules.SetItem(&it);it.iItem= pos;it.iSubItem= 6;if(protocol = 1)it.pszText = ICMP;else if(protocol = 6)it.pszText = TCP;else if(protocol = 17)it.pszText = UDP;elseit.pszText = All;m_rules.SetItem(&it);it.iItem= pos;it.iSubItem= 7;it.pszText = action ? Drop : Forward;m_rules.SetItem(&it);void CFirewallAppView:OnClose() / TODO: Add your message handler code here and/or call defaultCFormView:OnClose();void CFirewallAppView:OnCancelMode() CFormView:OnCancelMode();/ TODO: Add your message handler code herevoid CFirewallAppView:OnButton1() / TODO: Add your control notification handler code here/jgtime=m_text1;(2) 规则界面/ RuleDlg.cpp : implementation file#include stdafx.h#include FirewallApp.h#include RuleDlg.h#include sockUtil.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CRuleDlg dialogCRuleDlg:CRuleDlg(CWnd* pParent /*=NULL*/): CDialog(CRuleDlg:IDD, pParent)/AFX_DATA_INIT(CRuleDlg)m_ipsource = _T(0.0.0.0);m_portsource = 0;m_ipdestination = _T(0.0.0.0);m_portDestination = 0;m_action = _T(Tirar);m_protocol = _T(TCP);m_srcMask = _T(255.255.255.255);m_dstMask = _T(255.255.255.255);/AFX_DATA_INITvoid CRuleDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CRuleDlg)DDX_Text(pDX, IDC_EDIT1, m_ipsource);DDV_MaxChars(pDX, m_ipsource, 15);DDX_Text(pDX, IDC_EDIT2, m_portsource);DDX_Text(pDX, IDC_EDIT3, m_ipdestination);DDV_MaxChars(pDX, m_ipdestination, 15);DDX_Text(pDX, IDC_EDIT4, m_portDestination);DDX_CBString(pDX, IDC_COMBO3, m_action);DDX_CBString(pDX, IDC_COMBO4, m_protocol);DDX_Text(pDX, IDC_EDIT6, m_srcMask);DDV_MaxChars(pDX, m_srcMask, 15);DDX_Text(pDX, IDC_EDIT5, m_dstMask);DDV_MaxChars(pDX, m_dstMask, 15);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CRuleDlg, CDialog)/AFX_MSG_MAP(CRuleDlg)ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CRuleDlg message handlersvoid CRuleDlg:OnOK() int result;UpdateData(TRUE);result = inet_addr(m_ipsource, &srcIp);if(result = -1)AfxMessageBox(Source Ip isnt valid.);return;result = inet_addr(m_srcMask, &srcMask);if(result = -1)AfxMessageBox(Source Mask isnt valid.);return;result = inet_addr(m_ipdestination, &dstIp);if(result = -1)AfxMessageBox(Destination Ip isnt valid.);return;result = inet_addr(m_dstMask, &dstMask);if(result = -1)AfxMessageBox(Destination Mask isnt valid.);return;if(m_protocol = TCP)protocol = 6;else if(m_protocol = UDP)protocol = 17;else if(m_protocol = ICMP)protocol = 1;elseprotocol = 0;if(m_action = )AfxMessageBox(Select an Action, please);return;elseif(m_action = Forward)cAction = 0;elsecAction = 1;srcPort = m_portsource;dstPort = m_portDestination;CDialog:OnOK();void CRuleDlg:OnChangeEdit1() / TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CDialog:OnInitDialog()/ function and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your control notification handler code here(3) 界面操作源码#include stdafx.h#include FirewallApp.h#include MainFrm.h#include RuleDlg.h#include FirewallAppDoc.h#include FirewallAppView.h#include SockUtil.h#include rules.h#include stdio.h#include Windows.h#include ctime#include cstdlib#include process.h#includetime.h#include#include #include#include#include #define HAVE_REMOTE#include C:WpdPackIncludepcap.h #include #pragma comment(lib, wpcap.lib)#pragma comment(lib, Packet.lib)#pragma comment(lib, wsock32.lib)#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifusing namespace std;/* 4字节的IP地址*/ typedef struct ip_address u_char byte1; u_char byte2; u_char byte3; u_char byte4; ip_address; /* IPv4 首部*/ #define IPPROTO_TCP 6#define IPPROTO_UDP 17#define IPPROTO_ICMP 1#define IPPROTO_IGMP 2typedef struct ip_header u_char ver_ihl; / 版本(4 bits) + 首部长度(4 bits) u_char tos; / 服务类型(Type of service) u_short tlen; / 总长(Total length) u_short identification; / 标识(Identification) u_short flags_fo; / 标志位(Flags) (3 bits) + 段偏移量(Fragment offset) (13 bits) u_char ttl; / 存活时间(Time to live) u_char proto; / 协议(Protocol) u_short crc; / 首部校验和(Header checksum) ip_address saddr; / 源地址(Source address) ip_address daddr; / 目的地址(Destination address) u_int op_pad; / 选项与填充(Option + Padding) ip_header; /*tcp 首部*/typedef struct tcp_header u_short th_sport; /16位源端口 u_short th_dport; /16位目的端口 u_int th_seq; /32位序列号 u_int th_ack; /32位确认号/ byte th_lenres; /4位首部长度/6位保留字 u_short th_offx2; /* data offset, rsvd */#define TH_OFF(th) (th)-th_offx2 & 0xf0) 4) byte th_flag; /6位标志位 u_short th_win; /16位窗口大小 u_short th_sum; /16位校验和 u_short th_urp; /16位紧急数据偏移量tcp_header;/* UDP 首部*/ typedef struct udp_header u_short sport; / 源端口(Source port) u_short dport; / 目的端口(Destination port) u_short len; / UDP数据包长度(Datagram length) u_short crc; / 校验和(Checksum) udp_header; /*TLS首部*/#define Change_Cipher_Spec 20#define Alert 21#define Handshake 22#define Application_Data 23typedef struct ProtocolVersionu_short major, minor; ProtocolVersion;ProtocolVersion version = 3, 1 ; /* TLS v1.0 */typedef struct TLSPlaintextu_char ContentType;ProtocolVersion version;u_short length;/ opaque fragmentTLSPlaintext.length; TLSPlaintext;void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data); /void _catch(void *);DWORD WINAPI _catch(PVOID pParam);DWORD WINAPI AI(PVOID pParam);fstream fout,fout1;ifstream fin;HANDLE Htread=CreateThread(NULL,0,_catch,NULL,CREATE_SUSPENDED,NULL);HANDLE HAI=CreateThread(NULL,0,AI,NULL,CREATE_SUSPENDED,NULL);string *pro,*sip,*dip,*temp,*time1; int sum=30000,sum1=0,*spo,*dpo,jgtime=10;double *len;typedef structstring tsip,tdip;int times,flag,dpo,spo,portimes;double slen;tongji;/ CMainFrameIMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)/AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()ON_COMMAND(ID_BUTTONSTART, OnButtonstart)ON_COMMAND(ID_BUTTONADD, OnButtonadd)ON_COMMAND(ID_BUTTONDEL, OnButtondel)ON_COMMAND(ID_BUTTONDESINSTALL, OnButtondesinstall)ON_COMMAND(ID_BUTTONINSTALL, OnButtoninstall)ON_COMMAND(ID_BUTTONSTOP, OnButtonstop)ON_UPDATE_COMMAND_UI(ID_BUTTONSTART, OnUpdateButtonstart)ON_UPDATE_COMMAND_UI(ID_BUTTONSTOP, OnUpdateButtonstop)ON_COMMAND(IDMENU_ADDRULE, OnMenuAddrule)ON_COMMAND(IDMENU_DELRULE, OnMenuDelrule)ON_COMMAND(IDMENU_INSTALLRULES, OnMenuInstallrules)ON_COMMAND(IDMENU_UNINSTALLRULES, OnMenuUninstallrules)ON_COMMAND(ID_MENUSTART, OnMenustart)ON_UPDATE_COMMAND_UI(ID_MENUSTART, OnUpdateMenustart)ON_COMMAND(ID_MENUSTOP, OnMenustop)ON_UPDATE_COMMAND_UI(ID_MENUSTOP, OnUpdateMenustop)ON_COMMAND(ID_APP_EXIT, OnAppExit)ON_COMMAND(IDMENU_LOADRULES, OnLoadRules)ON_COMMAND(IDMENU_SAVERULES, OnSaveRules)ON_WM_CLOSE()/AFX_MSG_MAPEND_MESSAGE_MAP()static UINT indicators =ID_SEPARATOR, / status line indicatorID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;/ CMainFrame construction/destructionCMainFrame:CMainFrame()started = FALSE;/ Cargo el driver IpFilterDriver y lo pongo en estado Start.ipFltDrv.LoadDriver(IpFilterDriver, System32DriversIpFltDrv.sys, NULL, TRUE);/ No debo desregistrar el driver una vez salgo de la aplicacion.ipFltDrv.SetRemovable(FALSE);/ Cargo el driver de filtradoif(filterDriver.LoadDriver(DrvFltIp, NULL, NULL, TRUE) != DRV_SUCCESS)AfxMessageBox(Error loading the driver.);exit(-1);CMainFrame:CMainFrame()int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0(Failed to create toolbarn);return -1; / fail to createif (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)TRACE0(Failed to create status barn);return -1; / fail to create/ TODO: Delete these three lines if you dont want the toolbar to/ be dockable/m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);/EnableDocking(CBRS_ALIGN_ANY);/DockControlBar(&m_wndToolBar);SetWindowText(智能防火墙);fout.open(c:fw.txt,ios:app|ios:out|ios:in);fout1.open(c:fwACL.txt,ios:app|ios:out|ios:in);/HANDLE Htread=CreateThread(NULL,0,_catch,NULL,CREATE_SUSPENDED,NULL);return 0;BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) )return FALSE;/para quitar el untitled del titulo de la aplicacioncs.style &= FWS_ADDTOTITLE;return TRUE;/ CMainFrame diagnostics#ifdef _DEBUGvoid CMainFrame:AssertValid() constCFrameWnd:AssertValid();void CMainFrame:Dump(CDumpContext& dc) constCFrameWnd:Dump(dc);#endif /_DEBUG/ CMainFrame message handlersvoid CMainFrame:OnButtonstart() if(filterDriver.WriteIo(START_IP_HOOK, NULL, 0) != DRV_ERROR_IO)started = TRUE;CFirewallAppDoc *doc = (CFirewallAppDoc *)GetActiveDocument();unsigned int i;DWORD result;/ Le envio las reglas una a una al driverfor(i=0;inRules;i+)result = AddFilterToFw(doc-rulesi.sourceIp, doc-rulesi.sourceMask,doc-rulesi.sourcePort,doc-rulesi.destinationIp,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!