




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文(科研训练、毕业设计)题 目:基于网络的漏洞分析系统姓 名:学 院:软件学院系:专 业:软件工程年 级:学 号:指导教师(校内): 职称: 年 月49摘 要摘 要在信息技术革命的浪潮中,全球互联网(World Wide Web)起着至关重要的作用。如今互联网已经深入到行政,经济,军事等各个角落,成为人们工作生活中不可或缺的一部分。然而由于互联网早期设计的缺陷,在广泛普及的同时越来越多的安全问题暴露出来,造成不可估量的损失,成为阻碍网络发展的最大障碍。本文分析了网络安全问题中的重要环节:漏洞的产生。漏洞作为复杂软件设计与生俱来的危机几乎不可避免,这是由于软件设计本身的复杂性以及早期网络协议的脆弱性造成的。几乎每天都有新的漏洞被发现,在软件更新的同时漏洞也会不断产生。虽然可以对已有的漏洞进行修补,然而庞大的漏洞数量,频繁的漏洞更新工作,以及更多潜在的漏洞危险仍然严重影响着网络的安全。本系统对分析网络漏洞的有力工具:端口漏洞扫描器进行了研究,实践和探索。该系统基于Visual C+.net开发平台,运用Winsock,多线程,MFC等技术作为开发手段,在简洁良好的用户界面环境下实现了对目标主机端口的探测以及常见漏洞的扫描分析等功能。关键词 网络安全工具 漏洞扫描 端口探测 WinsockAbstractAbstractDuring the 3rd revolution of technology, the World Wide Web played a very significant role. It activates in many parts of human life, such as administration, economic and military, that one can hardly tear apart from. Nevertheless, as the limitation in earlier protocol design, more and more serious security problems come up. And for it inestimably loss suffered. The security problem becomes the most important one that restricts the evolution of Internet.In this paper we have analyzed a very important part of the Internet security: the generation of loophole. Its impossible to avoid all the loopholes in software especially that is huge due to the complexity of the system and the limitation in earlier design. New loopholes are discovered, or created in the update everyday. Although its possible to patch a loophole as we discovered it, the unnumbered loopholes, whether discovered or known, still limited the security of Internet.In our work, we have designed a very powerful tool in loophole analysis: a Network Vulnerability Scanner in Visual C+ .net SDK, with Winsock, Multithreading, and MFC technology. With clearly UI, ports scan and some familiar loopholes scan are achieved. Key words Network security tools, Network vulnerability scan, Port scan, Loophole scan.目 录目 录第一章 绪 论611 课题背景612 主要研究内容713 本论文组织结构8第二章 基本概念和工具921 基本概念及其技术9211 TCP/IP协议简介9212 端口功能简介9213 多线程技术简介12214 Winsock技术简介14215 常见漏洞简介1722 使用工具及其介绍19221 Microsoft Visual Studio .net简介19222 Microsoft Visual C+简介20223 MFC简介2123 本章小结22第三章 系统的设计2331 系统整体设计方案23311 设计模式简介23312 系统流程简介24313 系统的类和对象2532 系统的详细设计26321 端口探测子模块26322 漏洞扫描子模块2733 本章小结28第四章 系统的实现2941 系统的开发环境2942 系统的运行界面2943 系统的功能演示31431 端口探测功能演示31432漏洞扫描功能演示3244 与X-Scan系统的对比34441端口探测功能对比34442漏洞扫描功能对比3645 本章小结38第五章 总 结39致 谢40参考文献41第一章 绪论CONTENTSCONTENTSCHAPTER 1 INTRODUCTION611 Background612 Contents And Means713 Thesis Hierarchy8CHAPTER 2 BASIC CONCEPTS AND TOOLS921 Basic Concept And Technology9211 TCP/IP Protocol Introduction9212 Port Introduction9213 Multithreading Introduction12214 Winsock Introduction14215 Familiar Loopholes Introduction1722 22 Tool Introduction19221 Microsoft Visual Studio .net Introduction19222 Microsoft Visual C+ Introduction20223 MFC Introduction2123 Summary22CHAPTER 3 SYSTEM DESIGN2331 Holistic Design Plan23311 Design Pattern23312 Flow Chart24313 Classes Chart2532 Partial Design Plan26321 Port Module Flow Chart26322 Loophole Module Flow Chart2733 Summary28CHAPTER 4 System Implement2941 Environment2942 Interface Introduction2943 System Demonstrate31431 Port Scan Demo31432 Loophole Scan Demo3244 Compare With X-Scan34441 Port Scan Function Compare34442 Loophole Scan Function Compare3645 Summary38CHAPTER 5 Conclusions and Perspectives39ACKNOWLEDGES40REFERENCES41第一章 绪 论第一章 绪 论11 课题背景在信息技术革命的浪潮中,全球互联网(World Wide Web)起着至关重要的作用。通过网络作为信息传递的载体,进行信息的传递,交互和获取已经成为现代信息社会的一个重要特征。如今随着人们对网络信息系统的依赖性日益增强,互联网已经深入到行政,经济,军事等各个角落,成为人们工作生活中不可或缺的一部分。当今社会是一个信息化社会,计算机通信网络在政治、军事、金融、商业、交通、电信、文教等方面的作用日益增加。计算机技术和通信技术相结合所形成的信息基础设施已经成为反映信息社会特征最重要的基础设施。人们建立了各种各样完备的信息系统,使得人类社会的一些机密和财富高度集于计算机中。但是这些信息系统都是依靠计算机网络接受和处理信息,实现其相互间的联系和对目标的管理、控制。随着网络上各种新业务的兴起,如电子商务(Electronic Commerce)、电子现金(Electronic Cash)、数字货币(Digital Cash)、网络银行(Network Bank)等,以及各种专用网(比如金融网等)的建设,数据的保密问题显得越来越重要。由于互联网早期设计的缺陷,在广泛普及的同时越来越多的安全问题开始暴露出来。在人类进入信息时代的今天,人们对重要信息,小到个人隐私,个人虚拟财产,大到商业机密,国家安全机密的重视程度与日俱增。信息网络已经成为社会发展的重要保证。信息网络涉及到国家的政府、军事、文教等诸多领域。包括政府宏观调控决策、商业经济信息、银行资金转帐、股票证券、能源资源数据、科研数据等重要信息。其中有很多是敏感信息,甚至是国家机密,难免会吸引来自世界各地的各种人为攻击(例如信息泄漏、信息窃取、数据篡改、数据删添、计算机病毒等)。同时,网络实体还要经受诸如水灾、火灾、地震、电磁辐射等方面的考验。近年来,计算机犯罪案件也急剧上升,计算机犯罪已经成为普遍的国际性问题。据美国联邦调查局的报告,计算机犯罪是商业犯罪中最大的犯罪类型之一,每笔犯罪的平均金额为45000美元,每年计算机犯罪造成的经济损失高达50亿美元。计算机犯罪案率的迅速增加,使各国的计算机系统特别是网络系统面临着很大的威胁,并成为严重的社会问题之一。12 主要研究内容网络安全主要包括物理安全和逻辑安全2个方面。其中物理安全是指计算机系统,网络服务器,路由器,交换机等硬件设备的安全性。而逻辑安全指网络主机的访问安全策略,包括网络访问权限,登陆权限,目录控制权限,文件控制权限,用户表等权限得到合理的分配并有效的防止恶意操作。本文的研究重点主要在网络的逻辑权限。网络漏洞是网络逻辑权限的重要内容,其成因主要是由于设计人员和程序员的疏忽或失误及对网络环境的不熟悉造成的。进行网络开发时,许多设计开发者并不重视网络的安全情况,也不完全了解程序的内部工作机理,致使程序不能适应所有的网络环境,造成网络功能与安全策略发生冲突,最终导致漏洞的产生。网络中的漏洞可以存在于硬件和软件中,但更多还是以软件漏洞的形式存在。无论是网络应用软件,还是单机应用软件,都广泛隐藏有漏洞。网络中的聊天软件如QQ,文件传输软件如FlashFXP、CuteFTP,浏览器软件如IE,单机中的办公软件如MS Word,这些应用软件中都存在着可导致泄密和招致网络攻击的漏洞。在各种操作系统中也同样存在着大量漏洞,如:Windows系统中存在RPC远程任意代码执行漏洞等,RedHat中存在可通过远程溢出获得root权限的漏洞等,各种版本的Unix系统中同样存在着大量可导致缓冲器溢出的漏洞等。在Internet提供服务的各种服务器中,漏洞存在的情况和招致的危害更是严重。无论是Web服务器、FTP服务器、邮件服务器,还是数据库服务器和流媒体服务器都存在着可导致网络攻击的安全漏洞。脚本语言的设计缺陷和使用不规范,更是令因特网的安全状况雪上加霜。网络服务主要是依靠端口的开放进行的,TCP/IP协议和UDP协议对于关闭的端口发送任何数据都是徒劳的。因此本系统在Visual C+.net开发平台下,利用Winsock技术和多线程技术,在简洁良好的用户界面下实现了对60个常用端口的同步探测工作,并对网络上比较知名的3个漏洞(FINGER,FTP,SMTP漏洞)进行了相应的扫描。从而有效的对目标主机的脆弱程度进行了一定程度的检验。13 本论文组织结构本论文结构如下:第一章:绪论。介绍本论文的课题背景,主要研究内容和和组织结构。背景主要介绍了当今网络的重要性和安全状况,主要研究内容介绍了网络漏洞的产生和基本情况,以及系统的实现意义。第二章:基本概念和工具。介绍本系统使用的技术,如TCP/IP网络协议的起源及分层结构,端口的分类及其功能简介,多线程技术和Winsock技术,常见漏洞简介等。以及系统的开发工具:Microsoft Visual Studio .net,Microsoft Foundation Class等。第三章:系统的设计。主要介绍系统的设计模式,类之间的关联(类图),系统运行的整体流程和详细的图表说明。以及系统详细设计,主要包括端口探测子模块和漏洞扫描子模块2个部分。第四章:系统的实现。简要说明了系统的运行界面,包括系统各个部分的功能和各个控件的作用。并演示了端口探测功能和漏洞扫描功能的执行结果,最后将本系统和网络上著名的漏洞扫描软件X-Scan进行对比,分析了本系统的优势和不足之处。第五章:总结。总结了系统设计的经验以及个人对系统的评价,对系统进行了展望,并确定了下一步工作。 第二章 基本概念和工具第二章 基本概念和工具本系统以Visual C+.net作为开发平台,利用TCP/IP协议和Winsock技术进行端口探测和漏洞分析。因此本章将从网络协议,端口开放,Winsock技术等方面进行详细的介绍。21 基本概念及其技术211 TCP/IP协议简介TCP/IP是为互联网开发的第一套协议,是在60 年代由美国麻省理工学院和一些商业组织为美国国防部开发的。TCP/IP协议是支持Internet/Intranet 的基本通信协议。传输控制协议TCP(Transmission Control Protocol)负责数据的流量控制,并保证传输的正确性。网际协议IP(Internet Protocol)负责将数据从一处传往另一处。TCP/IP 协议具有广泛的兼容性和可伸缩性,可连接不同的计算机网络协议、不同的网络设备。TCP/IP 已成为网络互连事实上的标准,并成为支持Internet/Intranet 的协议标准。从协议分层模型方面来讲,TCP/IP由四个层次组成:数据链路层(又称网络接口层)、网络层、传输层、应用层。图3.1 TCP/IP分层结构 数据链路层:这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送,或者从网络上接收物理帧,抽出IP数据报,交给IP层。 网络层:负责相邻计算机之间的通信。其功能包括三方面。一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。二、处理输入数据报:首先检查其合法性,然后进行寻径-假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。三、处理路径、流控、拥塞等问题。 传输层:提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。 应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。如远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。TCP/IP协议的通讯模式: 图3.2 TCP/IP通讯模式212 端口功能简介端口是计算机与外界通讯交流的出口。应用程序通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。按端口号可分为3大类:(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。(2)注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。(3)动态和私有端口(Dynamicand/PrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。端口扫描用于判断目标主机的端口是否开放。从黑客的角度讲,攻击一台联网主机首先必定是寻找对方开放了哪些网络服务,即便该主机可能有防火墙保护,只要它开放了一些网络服务,那么其安全性就会大大降低。而获得目标主机是否开放某些服务,最好的办法就是尝试连接该服务所对应的端口。其工作原理为向扫描对象的TCP/UDP端口发送连接请求,根据对方的回应判断端口是否开放。具体流程将在Winsock函数中进行介绍。常见端口列表:7回送(Echo)13日期时间(Daytime)15网络状态(Netstat)20FTP数据(FTP-Data)21FTP控制(FTP)23终端连接(Telnet)25简单邮件传输协议(SMTP)37时间(Time)53域名服务器(DNS)67引导协议服务器(Bootps)68引导协议客户(Bootpc)69简单文件传输协议(TFTP)80Web服务(HTTP)110邮件协议第3版(POP3)118SQL服务(SQL Service)8080代理服务器(Proxy)213 多线程技术简介线程(Thread)是进程(Process)中的一个实体,是被系统独立调度和分派的基本单位。线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。 线程是程序中一个单一的顺序控制流程, 它和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。线程的周期包括新建,就绪,运行,阻塞,死亡5个阶段。在MFC中,线程分为用户界面线程(UI线程)和工作者线程2种。这2种之间的区别是UI线程有消息循环,而工作者线程没有。UI线程能够创建窗口并处理发送给这些窗口的消息,而工作者线程执行后台任务,并不需要处理窗口和消息循环。由于多线程的执行在应用程序中是异步的,适当的运用多线程技术虽然增加了代码的额外复杂度,却可以极大的提高程序的响应性能。工作者线程适合于执行孤立的任务,这些任务能够与应用程序的其他部分相互脱离,并且能够在前台进行其他处理时在后台执行这些任务,有效的降低了程序的等待时间,提高了运行的效率。在MFC中,线程作为CWinThread类存在,其相关函数为:1AfxBeginThread()声明:CWinThread* AfxBeginThread(AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);作用:根据输入的线程类型创建一个新线程,并将LPVOID类型的指针作为参数传递给新创建的线程。返回值:若成功,则返回指向新创建线程的指针。2AfxEndThread()声明:void AFXAPI AfxEndThread(UINT nExitCode, BOOL bDelete = TRUE);作用:终止正在执行的某个线程返回值:无3. WaitForSingleObject() 声明:DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);作用:在等待时间内判断线程或对象是否已经正常中止或有响应。返回值:若函数成功,则返回线程结束的事件,可以为WAIT_ABANDONED(该线程作为互斥线程,在调用该线程的线程结束之前无法中止),WAIT_OBJECT_0(线程有响应,并且已经正常中止),WAIT_TIMEOUT(超过规定的等待时间,强制退出)。214 Winsock技术简介WindowsSockets规范以U.C.Berkeley大学BSDU NIX中流行的Socket接口为范例定义了一套Micosoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数,也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。WindowsSockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Sockets也定义了一个二进制接口(ABI ),以此来保证应用WindowsSockets API的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套WindowsSockets规范的网络软件,我们称之WindowsSockets兼容的,而WindowsSockets兼容实现的提供者,我们称之为Windows Sockets提供者。一个网络软件供应商必须百分之百地实现Windows Sockets规范才能做到现WindowsSockets兼容。任何能够与WindowsSockets兼容实现协同工作的应用程序就被认为是具有WindowsSockets接口。我们称这种应用程序为WindowsSockets应用程序。WindowsSockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有WindowsSockets实现都支持流套接口和数据报套接口应用程序调用WindowsSockets的API实现相互之间的通讯。WindowsSockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。图3.3 Winsock通讯模式 常用Winsock函数介绍:1htons()声明:u_short htons(u_short hostshort);作用:将主机的无符号短整形数转换成网络字节顺序。返回值:返回一个网络字节顺序的值2inet_addr()声明:unsigned long inet_addr(const char* cp);作用:将一个点间隔地址转换成为一个in_addr。返回值:若无错误发生,返回一个无符号长整形数,其中以适当字节顺序存放Internet地址。如果传入的字符串不是一个合法的Internet地址,那么inet_addr()返回INADDR_NONE。3socket()声明:SOCKET socket(int af, int type, int protocol);作用:创建一个对应于特定服务的套接口 返回值:若无错误发生,返回引用新套接口的描述字。否则返回SOCKET_ERROR错误,可以用WSAGetLastError()获取相应错误代码。4connect()声明:int connect(SOCKET s, const struct sockaddr* name, int namelen);作用:建立一个面向某套接口的连接返回值:若无错误发生,返回0。否则,返回一个SOCKET_ERROR错误,可以用WSAGetLastError()获取相应错误代码。5send()声明:int send(SOCKET s, const char* buf, int len, int flags);作用:向一个已连接的套接口发送数据返回值:若无错误发生,返回所发送数据的总数(可能小于len规定的大小)。否则返回一个SOCKET_ERROR错误,可以用WSAGetLastError()获取相应错误代码。6recv()声明:int recv(SOCKET s, char* buf, int len, int flags);作用:从一个套接口接收数据返回值:若无错误发生,返回读入的字节数。如果连接中断,返回0。否则返回一个SOCKET_ERROR错误,可以用WSAGetLastError()获取相应错误代码。7closesocket()声明:int closesocket(SOCKET s);作用:关闭一个套接口返回值:若无错误发生,返回0。否则,返回一个SOCKET_ERROR错误,可以用WSAGetLastError()获取相应错误代码。215 常见漏洞简介FINGER漏洞: Finger是UNIX系统中用于查询用户情况的实用程序。UNIX系统保存了每个用户的详细资料,包括E-mail地址、帐号,在现实生活中的真实姓名、登录时间、有没有未阅读的信件,最后一次阅读E-mail的时间以及外出时的留言等资料。Finger命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“主机名”,采用用户名主机名的格式,不过要查询的网络主机需要运行finger守护进程。该命令的一般格式为:finger 选项 使用者 用户主机 可能的漏洞:SunOS fingerd漏洞列出用户名列表Cfingerd漏洞可执行任意命令finger服务器漏洞可执行任意命令dot漏洞显示WEB目录信息FTP漏洞: FTP(File Transfer Protocal),是用于Internet上的控制文件的双向传输的协议。同时,它也是一个应用程序。用户可以通过它把自己的计算机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。Internet上早期实现传输文件,并不是一件容易的事。Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,而这些计算机可能运行于不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等。而各种操作系统之间存在文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件。可能的漏洞:匿名用户登陆允许匿名用户登陆(严格意义上不算漏洞)匿名用户建立目录允许匿名用户建立目录匿名用户修改文件允许匿名用户修改文件匿名用户执行Shell允许匿名用户执行Shell 以上漏洞严格意义上不算漏洞,然而权限开放过多还是会导致的安全性问题。SMTP漏洞:SMTP即简单邮件传输协议(Simple Mail Transfer Protocol),是一种提供可靠且有效电子邮件传输的协议。 SMTP是建立在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。 SMTP重要特性之一是能跨越网络传输邮件,即“ SMTP 邮件中继”。通常,一个网络可以由公用互联网上可相互访问的主机、防火墙分隔的网络上可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。可能的漏洞:RCPT漏洞可以获得用户名列表VRFY漏洞可以获得decode别名EXPN漏洞可以获得decode别名22 使用工具及其介绍221 Microsoft Visual Studio .net简介Visual Studio.NET是.NET平台下最为强大的开发工具,无论是软件服务商,还是企业应用程序的部署与发布,Visual Studio.NET都可以提供近乎完美的解决方案。Visual Studio.NET提供了包括设计、编码、编译调试、数据库联接操作等基本功能和基于开放架构的服务器组件开发平台、企业开发工具和应用程序重新发布工具以及性能评测报告等高级功能。Web 应用程序(以因特网为基础的应用程序)的优点在于可以让企业间的商业数据及交易等行为,透过因特网的通讯来彼此交换讯息。这样不但可以节省数据交换的时间,而且可以简化流程。但是在新一代的.NET 开发平台还没有出现之前,要让因特网应用程序达到上述的功能是一项浩大的工程。牵涉到的技术及程序开发语言,可能包括了HTML、ASP、VBScript、JavaScript、C+、ADO、SQL、COM、MTS 等。这样的环境对于开发人员来说,想要快速的开发一个功能强大且稳定可靠的Web 应用程序,不是一项轻松的工作。之前的微软的解决方案开发平台(Microsoft Visual StudioTM)及Windows 上的一些架构及服务,已经帮助程序设计师由单机平台的程序开发转为主从式(Client/Server)的架构来开发应用程序。但是对于现在的环境而言,因为企业的客户或供货商等所使用的系统或软件可能不尽相同,开发人员所要面对的挑战是要如何整合所有的异质性资源,所以必须把焦点转到如何发展分布式的因特网应用程序架构,好整合这些存在于不同平台或不同软件的异质资源。目前全世界有超过六百万的专业程序设计师,而百分之70 以上的人使用微软的Visual Studio 开发平台;现今最受欢迎的架构则为主/从式的架构,而发展最快速的架构则是以Web 为基础的架构。在这种架构下程序逻辑及数据的处理都是在服务器端,使用者是透过网络以浏览器来存取服务器端的数据。这种架构的开发工具,微软早在前两版的Visual Studio 中透过Active Server Pages(ASP)以及IIS 3.0 就已经提供了。为了因应Web 架构的快速发展及广大程序开发人员的需求,微软亦举办了不下百场的研讨会和开发人员沟通、交换意见,就是为了提供给开发人员更好的解决方案开发平台。而这个新一代开发平台目前已经推出了,即为Visual Studio.NET。VisualStudio.NET 开发平台里面包含Visual Basic.NET、C#、Visual C+、ASP.NET 以及VisualFoxPro。为了让这套开发平台更容易开发以因特网为基础的应用程序,这个开发平台做了许多和以往不同的改革,这个改革就是.NET Framework。.NET 架构就是为了让开发分布式因特网应用程序架构变得更简单容易而发展出来的。222 Microsoft Visual C+简介Visual C+是一个功能强大的可视化软件开发工具,是Visual Studio .net重要的一员。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。Visual C+不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Visual C+大概可以分成三个主要的部分:1 Developer Studio,这是一个集成开发环境,日常工作的99%都是在其上完成的。虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能。Developer Studio并不是专门用于VC的,它也同样用于VB,VJ,VID等Visual Studio系列的其他产品。Developer Studio并不等于Visual C+, 它只是Visual C+的一个壳子。2 MFC。从理论上来讲,MFC不是专用于Visual C+。 Borland C+,C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,只要愿意,用Visual C+来编写SDK程序,或者使用STL,ATL,一样没有限制。然而,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C+而不用MFC就等于抛弃了Visual C+中很大的一部分功能。3 Platform SDK。这是Visual C+和整个Visual Studio的精华和灵魂。大致说来,Platform SDK是以Microsoft C/C+编译器为核心,配合MASM,并辅以其他一些工具和文档资料。编译程序的功能是由CL,NMAKE,和其他许多命令行程序实现的。这些看不到的程序是Visual Studio的基石。223 MFC简介MFC,即微软基础类(Microsoft Foundation Classes),是微软提供用于在C+环境下编写应用程序的一个框架和引擎,是挂在Visual C+之上的一个辅助软件开发包。MFC同Borland C+集成的VCL一样是一个非外挂式的软件包,类库,然而MFC类是微软为Visual C+专配的。作为Win API与C+的结合(API,即微软提供的Windows操作系统下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身。可以允许用户使用各种各样的第三方编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行),MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作。但它提供的类中有许多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在Windows中实现内部处理的类,如数据库的管理类等。MFC中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C+提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。23 本章小结本章前半部分主要详细介绍本系统开发所涉及的基本概念,包括TCP/IP协议,端口的作用及功能,多线程的概念及相关函数,Winsock作用及其相关函数。在系统中这些函数起着极其重要的作用。后半部分主要介绍系统所采用的一些开发平台如Microsoft Visual Studio .net和其下的Visual C+ .net,MFC,帮助理解开发过程中所涉及的最新技术及其背景。第三章 系统的设计第三章 系统的设计设计是软件开发的基础,对整个系统的开发过程起着决定性的影响。本章将介绍本系统的总体设计方案,包括系统的设计模式,流程图,UML图等。以及系统的详细设计方案,包括各个模块的具体设计等。31 系统整体设计方案311 设计模式简介本系统以程序主界面作为用户交互的UI接口,接受用户输入的数据并发送给后台参数库作为端口扫描模块和漏洞探测模块的初始参数。其功能需要调用Windows API函数执行。其中端口扫描模块和漏洞探测模块作为主线程,分别创建和调用各个工作者子线程实现程序的主要功能。完成后返回给程序主界面作为反馈给用户的结果。系统整体模式如图3.1图3.1 系统整体模式图312 系统流程简介本系统开始运行后等待用户设定参数,通过判断端口探测和漏洞扫描选项是否选中进行下一步的操作。若端口探测选中,则创建子线程开始工作,主线程等待结果,最终输出结果,返回等待状态。若漏洞扫描选中,则依次判断各个漏洞扫描选项是否选中,最终输出结果,返回等待状态。具体流程如图3.2图3.2 系统的运行流程313 系统的类和对象本系统主要包含5大类:UI接口类,端口探测线程,漏洞扫描线程,端口探测子线程,漏洞扫描子线程。其中UI接口类是整个程序的主类,负责调用和创建端口探测线程和漏洞扫描线程,以及更新各个控件的当前状态,输出要表达的计算结果等。端口探测线程和漏洞扫描线程用来控制端口扫描子线程和漏洞扫描子线程的多线程运算,提高系统的整体效率和响应能力。端口探测子模块和漏洞扫描子模块是系统的关键部分,程序的主要功能都在这里实现。其类图如图3.3图3.3 系统的类图32 系统的详细设计321 端口探测子模块端口探测子模块是端口探测功能的实现线程,其流程包括创建一个socket,设定发送方参数(SOCKADDR_IN数据结构),连接端口(connect函数),根据connect函数的返回值确定端口是否开放,最终返回结果。同时的执行多个线程可以提高系统的总体运行效率。其流程如图3.4图3.4 端口探测流程图322 漏洞扫描子模块漏洞扫描子模块是漏洞扫描功能的实现线程(分为FTP漏洞扫描,FINGER漏洞扫描和SMTP漏洞扫描3种),其流程包括创建一个socket,设定发送方参数(SOCKADDR_IN数据结构),连接端口(connect函数),根据connect函数的返回值确定端口是否开放,若端口开放,则接收返回值(recv),根据返回值确定发送值发送给目标端口(send),等待若干时间后继续接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 提升通过率的光电工程师考试试题及答案
- 金山 学年第二学期高三质量测试政治试卷
- 历史试题及答案绥化模拟
- 浔郡中学招生试题及答案
- 脑卒中的急救与处理试题及答案
- 激光焊接与检测技术相结合试题及答案
- 水泥机械专业试题及答案
- 空航乘务面试题及答案
- 河南教资作文试题及答案
- 系统规划与管理师考试应对复杂问题的策略试题及答案
- 测试工程师季度述职报告
- XX文化产业投资公司二零二五年度股东退股及文化创意协议
- 跟着电影去旅游知到智慧树章节测试课后答案2024年秋山东大学(威海)
- 2024上海市招聘社区工作者考试题及参考答案
- 2021年高考物理试卷(江苏)(解析卷)
- 第六单元《组合图形的面积》(教学设计)-人教版五年级数学上册
- 地理-北京市朝阳区2024-2025学年高三第一学期期末质量检测考试试题和答案
- 2024年度高中报名辅导中介服务合同
- 【MOOC】信号与系统-哈尔滨工业大学 中国大学慕课MOOC答案
- 19《牧场之国》第二课时说课稿-2023-2024学年五年级下册语文统编版
- 十四五《中成药学》第一章-绪论
评论
0/150
提交评论