资源描述
目 录
1.绪论 1
1.1选题背景及目的 1
1.2题目意义及研究现状 1
1.3网络安全现状与隐患 2
1.4潜在威胁 3
1.5选题的意义及价值 4
1.6论文组织及研究内容 5
1.6.1论文组织 5
1.6.2研究内容 5
2. 理论模型及相关技术 6
2.1扫描文件相关技术 6
2.1.1文件查找 6
2.1.2文件对比 6
2.1.3扫描系统原理 7
3. 总体设计 8
3.1预处理模块 8
3.2软件采用的方法技术 10
3.2.1数据库 10
3.2.2HIPS防火墙 11
3.2.3采用三层架构 11
4. 系统实现 12
4.1开发环境 12
4.2详细设计 12
4.2.1流量监控功能 12
4.2.2升级功能 14
4.3程序实现基本算法 15
4.3.1流量监控算法 15
4.3.2软件升级算法 21
4.3.3扫描文件算法 34
5.系统测试 44
5.1软件测试概念 44
5.2测试说明 44
5.3测试结果 44
6.结论 47
致 谢 48
参考文献 49
Ⅰ
网络攻击与防护之扫面软件设计
1.绪论
本论文首章内容首先说明了本次毕业设计题目的选题背景及目的,阐述了网络攻击与防护之扫描软件在生活中的重要意义,同时简述了当前网络攻击与防护之扫描软件的研究现状。最后给出了本篇论文的组织结构,介绍了本次论文的主要研究内容。
1.1选题背景及目的
计算机网络安全是指利用网络管理控制和技术措施,保证在一个网络环境里,数据的保密性、完整性及可使用性受到保护。计算机网络安全包括两个方面,即物理安全和逻辑安全。物理安全指系统设备及相关设施受到物理保护,免于破坏、丢失等。逻辑安安全包括信息的完整性、保密性和可用性。
计算机网络安全不仅包括组网的硬件、管理控制网络的软件,也包括共享的资源,快捷的网络服务,所以定义网络安全应考虑涵盖计算机网络所涉及的全部内容。参照ISO给出的计算机安全定义,认为计算机网络安全是指:“保护计算机网络系统中的硬件,软件和数据资源,不因偶然或恶意的原因遭到破坏、更改、泄露,使网络系统连续可靠性地正常运行,网络服务正常有序。”
由于互联网络的发展,整个世界经济正在迅速地融为一体,而整个国家犹如一部巨大的网络机器。计算机网络已经成为国家的经济基础和命脉。计算机网络在经济和生活的各个领域正在迅速普及,整个社会对网络的依赖程度越来越大。众多的企业、组织、政府部门与机构都在组建和发展自己的网络,并连接到Internet上,以充分共享、利用网络的信息和资源。网络已经成为社会和经济发展的强大动力,其地位越来越重要。伴随着网络的发展,也产生了各种各样的问题,其中安全问题尤为突出。了解网络面临的各种威胁,防范和消除这些威胁,实现真正的网络安全已经成了网络发展中最重要的事情。
1.2题目意义及研究现状
计算机网络安全是指利用网络管理控制和技术措施,保证在一个网络环境里,数据的保密性、完整性及可使用性受到保护。计算机网络安全包括两个方面,即物理安全和逻辑安全。物理安全指系统设备及相关设施受到物理保护,免于破
1
坏、丢失等。逻辑安安全包括信息的完整性、保密性和可用性。
计算机网络安全不仅包括组网的硬件、管理控制网络的软件,也包括共享的资源,快捷的网络服务,所以定义网络安全应考虑涵盖计算机网络所涉及的全部内容。参照ISO给出的计算机安全定义,认为计算机网络安全是指:“保护计算机网络系统中的硬件,软件和数据资源,不因偶然或恶意的原因遭到破坏、更改、泄露,使网络系统连续可靠性地正常运行,网络服务正常有序。”
由于互联网络的发展,整个世界经济正在迅速地融为一体,而整个国家犹如一部巨大的网络机器。计算机网络已经成为国家的经济基础和命脉。计算机网络在经济和生活的各个领域正在迅速普及,整个社会对网络的依赖程度越来越大。众多的企业、组织、政府部门与机构都在组建和发展自己的网络,并连接到Internet上,以充分共享、利用网络的信息和资源。网络已经成为社会和经济发展的强大动力,其地位越来越重要。伴随着网络的发展,也产生了各种各样的问题,其中安全问题尤为突出。了解网络面临的各种威胁,防范和消除这些威胁,实现真正的网络安全已经成了网络发展中最重要的事情。
1.3网络安全现状与隐患
网络安全问题已成为信息时代人类共同面临的挑战,国内的网络安全问题也日益突出。具体表现为:计算机系统受病毒感染和破坏的情况相当严重;电脑黑客活动已形成重要威胁;信息基础设施面临网络安全的挑战;信息系统在预测、反应、防范和恢复能力方面存在许多薄弱环节;网络政治颠覆活动频繁。
随着信息化进程的深入和互联网的迅速发展,人们的工作、学习和生活方式正在发生巨大变化,效率大为提高,信息资源得到最大程度的共享。但必须看到,紧随信息化发展而来的网络安全问题日渐凸出,如果不很好地解决这个问题,必将阻碍信息化发展的进程。
据统计,目前全球平均每20秒就会发生一起Internet主机被入侵的事件,美国75%~85%的网站抵挡不住黑客攻击,约有75%的企业网上信息失窃,其中5%的企业损失在5万美元以上。而通过网络传播的病毒无论在其传播速度、传播范围和破坏性方面都比单机病毒更令人色变。目前全球已发现病毒5万余种,并仍以每天10余种的速度增长。有资料显示,病毒所造成的损失占网络经济损失的76%。
中国工程院院士沈昌祥说:“构筑信息与网络安全防线事关重大、刻不容缓。”
在各领域的计算机犯罪和网络侵权方面,无论是数量、手段,还是性质、规模,已经到了令人咋舌的地步。据有关方面统计,目前美国每年由于网络安全问题而遭受的经济损失超过170亿美元,德国、英国也均在数十亿美元以上,法国为100亿法郎,日本、新加坡问题也很严重。在国际刑法界列举的现代社会新型犯罪排行榜上,计算机犯罪已名列榜首。2003年,CSI/FBI调查所接触的524个组织中,有56%遇到电脑安全事件,其中38%遇到1~5起、16%以上遇到11起以上。因与互联网连接而成为频繁攻击点的组织连续3年不断增加;遭受拒绝服务攻击(DoS)则从2000年的27%上升到2003年的42%。调查显示,521个接受调查的组织中96%有网站,其中30%提供电子商务服务,这些网站在2003年1年中有20%发现未经许可入侵或误用网站现象。更令人不安的是,有33%的组织说他们不知道自己的网站是否受到损害。据统计,全球平均每20s就发生1次网上入侵事件,黑客一旦找到系统的薄弱环节,所有用户均会遭殃。
1.4潜在威胁
对计算机信息构成不安全的因素很多,其中包括人为的因素、自然的因素和偶发的因素。其中,人为因素是指,一些不法之徒利用计算机网络存在的漏洞,或者潜入计算机房,盗用计算机系统资源,非法获取重要数据、篡改系统数据、破坏硬件设备、编制计算机病毒。人为因素是对计算机信息网络安全威胁最大的因素。计算机网络不安全因素主要表现在以下几个方面:
(1)网络安全的五个特征:
保密性:信息不泄露给非授权用户、实体或过程,或供其利用的特性。
完整性:数据未经授权不能进行改变的特性。即信息在存储或传输过程中保持不被修改、不被破坏和丢失的特性。
可用性:可被授权实体访问并按需求使用的特性。即当需要时能否存取所需的信息。例如网络环境下拒绝服务、破坏网络和有关系统的正常运行等都属于对可用性的攻击。
可控性:对信息的传播及内容具有控制能力。
可审查性:出现的安全问题时提供依据与手段
(2)计算机网络的脆弱性:
互联网是对全世界都开放的网络,任何单位或个人都可以在网上方便地传输和获取各种信息,互联网这种具有开放性、共享性、国际性的特点就对计算机网络安全提出了挑战。互联网的不安全性主要有以下几项:
(3)网络的开放性
网络的技术是全开放的,使得网络所面临的攻击来自多方面。或是来自物理传输线路的攻击,或是来自对网络通信协议的攻击,以及对计算机软件、硬件的漏洞实施攻击。
(4)网络的国际性
意味着对网络的攻击不仅是来自于本地网络的用户,还可以是互联网上其他国家的黑客,所以,网络的安全面临着国际化的挑战。
(5)网络的自由性
大多数的网络对用户的使用没有技术上的约束,用户可以自由的上网,发布和获取各类信息。
所以,在网络中存在着很多不可预知的因素,互联网是对全世界开放的网络,安全就成了一个大问题,为了保护信息的安全,就必须加强网络安全性的建设。
1.5选题的意义及价值
网络安全是一个关系国家安全和主权、社会的稳定、民族文化的继承和发扬的重要问题。保护网络系统的硬件、软件及其系统中的数据,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断等一系列的问题。因此,选择“网络攻击与防护(扫描软件设计)”作为毕业设计的题目,希望涉及个人隐私或商业利益的信息在网络上传输时受到机密性、完整性和真实性的保护,避免其他人或对手利用窃听、冒充、篡改、抵赖等手段侵犯用户的利益和隐私, 访问和破坏。同时,对非法的、有害的或涉及国家机密的信息进行过滤和防堵,避免机要信息泄露,避免对社会产生危害,对国家造成巨大损失。通过对网络攻击与安全的研究,做出防护扫描软件,这样使网络用户能够安全的使用网络,避免财产的损失。
1.6论文组织及研究内容
1.6.1论文组织
本文分为六章:绪论、理论模型和技术基础以及总体设计、系统实现、系统测试、结论分析等。
第一章着重说明了本次设计的选题背景、研究的价值、目的和意义,简要说明了当前网络攻击与防护之扫描软件的研究现状。
第二章简要介绍了扫描软件设计引用到的相关知识,另外还加入了一些相关关键算法理论以及相关软件的操作应运知识。
第三章则对系统总体设计的一个说明,该部分对系统流程的各个模块进行了简明扼要的分析设计,对系统实施的可行性也进行了相应的分析总结。
第四章是整个系统进行了详细设计部分,主要分析了本项目编码实现的关键点,通过编写程序实现各项功能。而且,功能实现的结果也在该部分进行了展示。
第五章的功能测试部分简要介绍了测试的方法,并进行了精确地系统测试、获取到丰富的数据结果。
第六章详细分析了现已改进过的软件运行效果以及数据,并将其应用成效与使用其他扫描软件对比分析,总结差距和不足,并且改进程序的可行性和优越性。
1.6.2研究内容
本次毕业设计题目需要完成的主要内容如下:
(1)调运木马、病毒的“特征库”对木马、病毒的攻击进行查杀。
(2)建立的含4D HIPS的防火墙对主机进行保护,防止流氓软件修改注册表、系统文件等关键资源,防止流氓软件加载驱动。
(3)实现软件升级功能。
(4)存在恶意软件或者网络攻击弹出窗口进行询问。
(5)进行网络流量监控,实现本地流量动态观测。
2. 理论模型及相关技术
本章对扫描软件的关键技术基础进行简单的介绍,简单阐述了网络攻击防护之扫描软件所设计到的相关理论以及用到的相关技术。另外,针对程序开发所应用VC中相关算法进行相关说明。
2.1扫描文件相关技术
2.1.1文件查找
当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。如下代码:
CString strFileTitle;
CFileFind finder;
BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab");
while(bWorking)
{
bWorking=finder.FindNextFile();
strFileTitle=finder.GetFileTitle();
}
2.1.2文件对比
开始建立自己的病毒特征库,然后利用cfile查找指定类型的文件,读取查找到的文件前64位字节,并且与病毒特征码进行对比,判断两个文件是否相同,如果相同则弹出提示框发现病毒,然后继续查找文件依次对比,知道最后一个文件;如果判断判断特征码和读取的文件前64位字符不相同,那么直接跳到上一步继续查找直到最后一个文件结束为止。其中主要用到的函数就是setbuf、setvbuf和switch-case这样的函数,将指定类型的文件查找到后读取特定的字节存放到缓冲区和病毒特征码进行对比。
2.1.3扫描系统原理
利用特征值进行扫描病毒,特征值扫描是目前国际上反病毒公司普遍采用的查毒技术。其核心是从病毒体中提取病毒特征值构成病毒特征库,杀毒软件将用户计算机中的文件或程序等目标,与病毒特征库中的特征值逐一比对,判断该目标是否被病毒感染。依据病毒特征值进行扫描文件这样的原理就可以对指定的文件和磁盘进行扫描,实现全面的病毒查杀。在扫描文件的时候主要是对文件读操作和对比两个操作,在读取文件的时候使用函数fread读取指定类型文件的前面特定字节,如定义扫描文件前64位字节的文件,然后将读取的文件放到缓存区并且与病毒特征码进行对比,如果存在相同,则判断为病毒文件。3.总体设计
3.1预处理模块
1. 流量监控模块
对数据流进行的监控,主要包括出数据、入数据的速度、总流量。这样可以整体查看的本地使用流量的数据,以及将所得到的数据绘制成图像,这样更加直白的反映使用流量的动态变化。通过动态流量监控可以看出文件本地流量是否正常,是否存在垃圾软件占用本地流量或者自动下载有风险的文件。
2. 扫描文件模块
扫描文件模块主要是实现对本地指定类型文件的查找和已有的病毒特征库进行对比,提示是否为病毒,从而实现病毒查杀的功能。流程图如图3.1:
图3.1流程图
3. 防火墙模块
(1)内部网络和外部网络之间的所有网络数据流都必须经过防火墙
图3.2防火墙布置图
如图所示3.2这是防火墙所处网络位置特性,同时也是一个前提。因为只有当防火墙是内、外部网络之间通信的唯一通道,才可以全面、有效地保护企业网内部网络不受侵害。
根据美国国家安全局制定的《信息保障技术框架》,防火墙适用于用户网络系统的边界,属于用户网络边界的安全保护设备。所谓网络边界即是采用不同安全策略的两个网络连接处,比如用户网络和互联网之间连接、和其它业务往来单位的网络连接、用户内部网络不同部门之间的连接等。防火墙的目的就是在网络连接之间建立一个安全控制点,通过允许、拒绝或重新定向经过防火墙的数据流,实现对进、出内部网络的服务和访问的审计和控制。
典型的防火墙体系网络结构如下图所示。从图中可以看出,防火墙的一端连接企事业单位内部的局域网,而另一端则连接着互联网。所有的内、外部网络之间的通信都要经过防火墙。
防火墙最基本的功能是确保网络流量的合法性,并在此前提下将网络的流量快速的从一条链路转发到另外的链路上去。从最早的防火墙模型开始谈起,原始的防火墙是一台“双穴主机”,即具备两个网络接口,同时拥有两个网络层地址。防火墙将网络上的流量通过相应的网络接口接收上来,按照OSI协议栈的七层结构顺序上传,在适当的协议层进行访问规则和安全审查,然后将符合通过条件的报文从相应的网络接口送出,而对于那些不符合通过条件的报文则予以阻断。因此,从这个角度上来说,防火墙是一个类似于桥接或路由器的、多端口的(网络接口>=2)转发设备,它跨接于多个分离的物理网段之间,并在报文转发过程之中完成对报文的审查工作。
这是防火墙之所以能担当企业内部网络安全防护重任的先决条件。防火墙处于网络边缘,它就像一个边界卫士一样,每时每刻都要面对黑客的入侵,这样就要求防火墙自身要具有非常强的抗击入侵本领。它之所以具有这么强的本领防火墙操作系统本身是关键,只有自身具有完整信任关系的操作系统才可以谈论系统的安全性。其次就是防火墙自身具有非常低的服务功能,除了专门的防火墙嵌入系统外,再没有其它应用程序在防火墙上运行。
4.系统升级模块
系统升级是指软件在开始开发的时候有存在部分功能不能够理想的表现出来,,在软件发行后,通过对程序的修改或加入新的功能后,以补丁的形式发布的方式。用户把这些补丁下载到本地,选择本地路径进行更新,由于设计时的不足,不能够实现在线升级,因此需要下载到本地,才能够完成软件升级功能。
3.2软件采用的方法技术
3.2.1数据库
Microsoft SQL Server2008是微软公司推出的基于RDBMS(关系数据库管理系统)技术的数据库。它与ORACLE、SYBASE相比,有着安装方便、使用简单的优点,而且在性价比上有着其它数据库无法企及的优势。在我国,采用WINDOWS NT作为局域网操作系统的占不小比例,而从技术角度来说,同DB2结合大型机一样,SQL Server同WINDOWS NT紧密的结合在一起。能很好的处理部门级的数据。作为SQL Server 系列中的新版本,SQL Server2008增强了很多功能,服务器性能主要有:新数据类型、数据仓库、分布式查询和更新、动态锁定、通过MICROSOFT代理服务器访问SQL Server、新的安全模型、XML支持等;管理性能增强有:数据转换服务工具(DTS)、管理控制台(企业管理器)、WEB助手向导等。SQL Server 2008所具有的将关系数据库管理系统(RDBMS)扩展为虚拟的对象数据库管理系统(ODBMS)的能力,使SQL Server2008成为当今应用于Intranet、Internet及其extrnet中最具综合性的数据库开发环境。这就是我们采用SQL Server2008作为支持数据库的主要原因。
3.2.2 HIPS防火墙
本软件采用HIPS 4D防火墙模式,其中有AD(Application Defend)应用程序防御体系、RD(Registry Defend)注册表防御体系、FD(File Defend)文件防御体系和ND(Network Defend)网络防御四个主要模块。通过HIPS对主机进行保护, 使计算机免受流氓软件的攻击,防止流氓软件修改注册表、系统文件等关键资源,防止流氓软件加载驱动。基于HIPS 4D 防火墙的思路,建立全方位的扫描体系,计算机进行全方位的监视和控制,包括对启动项的控制、对进程状态及网络状态的控制等。
3.2.3采用三层架构
1.设备层
在设备层提供了基于状态检测的IP包过滤工具,可以有效防止数据旁路跳过检查,而内置的抗DOS/DDOS攻击算法则保证了系统免受拒绝服务攻击的干扰。
2.内核层
在内核层实现了对进程特征的检查,特征检查不仅仅包括文件名和路径,还包括文件签名信息和关键标志。同时系统可以截获进程对各种系统资源,如网络、文件、注册表的访问,并作出放行、询问、禁止等细颗粒度的动作。对进程行为进行监控,对可疑系统调用及时阻止或询问,防止进程注入,对合法进程提供保护。
3.应用层
在应用层提供了丰富的系统监视工具,包括对插件、驱动程序、自动运行程序等信息的监视,采用了端机自主配置和网络集中配置的策略配置工具,方便了单机用户和企业用户的使用,在端机自主配置上还同时支持傻瓜和专家模式,做到既简单易用又功能强大。4.系统实现
本章分析了项目详细设计;通过编写程序实现了系统各项功能,并详细介绍了功能实现结果。
4.1开发环境
windows应用程序的开发离不开win32 API。本文实践采用Microsoft Visual C++6.0集成开发环境。所以本系统的开发工具是Microsoft Visual C++6.0,在Windows环境下开发、通过win32 API及标准c库和MFC功能来设计实现。
4.2详细设计
4.2.1流量监控功能
1.流量监控主要是对数据流进行的监控,通常包括出数据、入数据的速度、总流量。在上网时用流量监控功能可以获得网络上下传流量以及总流量,本软件流量模块实现效果图如图4.1所示:
图4.1流量监控
2.流量监控模块有两个按钮,“确定”和“关于”,点击“确定”时软件自动关闭,点击“关于”时,弹出本软件部分信息,如图4.2所示:
图4.2.2关于模块
4.2.2升级功能
软件升级,是指软件开发者在编写软件的时候,由于设计人员考虑不全面或程序功能不完善,在软件发行后,通过对程序的修改或加入新的功能后,以补丁的形式发布的方式。用户把这些补丁更新,即升级完成!软件升级主要是是为了更好的满足用户的需求和防止病毒的入侵,本应运程序升级就是下载安装最新版本的软件所需文件压缩包到本地,然后选择更新包文件目录,对应运软件进行升级,完善功能,如图4.3所示,打开升级功能后,弹出选择更新包窗口,选择更新包所在的目录和文件。当文件升级成功后会弹出提示窗口,提示完成更新。如图4.4所示。在升级过程中升级进度显示的颜色会逐渐变化,更加直观的显示出安装更新包的进度以及完成情况。
图4.3升级功能
图4.4升级成功模块
4.3程序实现基本算法
4.3.1流量监控算法
编译环境:VC++6.0
开发语言:c++
实现主要代码:
#include "stdafx.h"
#include "NetTrafficButton.h"
#include "NetTrafficButtonDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// 自身的一个指针,这是为回调函数服务的
CNetTrafficButtonDlg* me;
// 记录选择的接口号
int SelectedInterface;
// 一个回调函数
void CALLBACK interfaceHasChanged(int interfacenumber);
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// Keine Nachrichten-Handler
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNetTrafficButtonDlg Dialogfield
CNetTrafficButtonDlg::CNetTrafficButtonDlg(CWnd* pParent /*=NULL*/)
: CDialog(CNetTrafficButtonDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CNetTrafficButtonDlg)
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
//为回调函数服务的
me = this;
}
void CNetTrafficButtonDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CNetTrafficButtonDlg)
DDX_Control(pDX, IDC_BUTTON3, m_cOutgoing);
DDX_Control(pDX, IDC_BUTTON2, m_cIncoming);
DDX_Control(pDX, IDC_BUTTON1, m_cTotalTraffic);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CNetTrafficButtonDlg, CDialog)
//{{AFX_MSG_MAP(CNetTrafficButtonDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON4, OnAbout)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNetTrafficButtonDlg Message handler
BOOL CNetTrafficButtonDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
// 使用第一个发现的网络连接
int SelectedInterface = 0;
// 每秒钟刷新一次网络状态
UINT timerresolution = 1000;
// To fake the Taskmanager....
UINT gridresolution = 100;
// 监视的接口
m_cTotalTraffic.SetInterfaceNumber(SelectedInterface);
// 这个button关注的时总流量
m_cTotalTraffic.SelectTrafficType(MFTrafficButton::Traffic_Total);
// 设置得到通知的回调函数
m_cTotalTraffic.SetInterfaceNumberNotificationFunction(interfaceHasChanged);
//设置更新速率
m_cTotalTraffic.SetUpdateSpeed(timerresolution, gridresolution);
m_cOutgoing.SetInterfaceNumber(SelectedInterface);
m_cOutgoing.SelectTrafficType(MFTrafficButton::Traffic_Outgoing);
m_cOutgoing.SetInterfaceNumberNotificationFunction(interfaceHasChanged);
m_cOutgoing.SetUpdateSpeed(timerresolution, gridresolution);
m_cIncoming.SetInterfaceNumber(SelectedInterface);
m_cIncoming.SelectTrafficType(MFTrafficButton::Traffic_Incoming);
m_cIncoming.SetInterfaceNumberNotificationFunction(interfaceHasChanged);
m_cIncoming.SetUpdateSpeed(timerresolution, gridresolution);
return TRUE;
}
void CNetTrafficButtonDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CNetTrafficButtonDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CNetTrafficButtonDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
//回调函数
void CALLBACK interfaceHasChanged(int interfacenumber)
{
SelectedInterface = interfacenumber;
CString text;
text.Format("NetTrafficButton using Interface: %d",SelectedInterface);
me->SetWindowText(text);
}
void CNetTrafficButtonDlg::OnAbout()
{
// TODO: Add your control notification handler code here
CAboutDlg about;
about.DoModal();
::AfxGetMainWnd();
}
4.3.2软件升级算法
编译环境:VC++6.0
开发语言:c++
实现主要代码:
// 名称: CLiveUpdateDlg.cpp
// 功能: 自动升级程序实现
// 注释:自动升级程序实现文件
////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "LiveUpdate.h"
#include "LiveUpdateDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#pragma warning(disable:4786)
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
CShadowButton m_OK;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
DDX_Control(pDX, IDOK, m_OK);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// ---------------------------------------------------------
// 名称: OnInitDia
展开阅读全文