端口信息工具的设计与实现毕业设计论文.doc

上传人:仙人指路1688 文档编号:2882125 上传时间:2023-03-01 格式:DOC 页数:40 大小:395KB
返回 下载 相关 举报
端口信息工具的设计与实现毕业设计论文.doc_第1页
第1页 / 共40页
端口信息工具的设计与实现毕业设计论文.doc_第2页
第2页 / 共40页
端口信息工具的设计与实现毕业设计论文.doc_第3页
第3页 / 共40页
端口信息工具的设计与实现毕业设计论文.doc_第4页
第4页 / 共40页
端口信息工具的设计与实现毕业设计论文.doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《端口信息工具的设计与实现毕业设计论文.doc》由会员分享,可在线阅读,更多相关《端口信息工具的设计与实现毕业设计论文.doc(40页珍藏版)》请在三一办公上搜索。

1、毕业设计(论文)端口信息探测工具的设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:端口信息探测工具的设计与实现摘要端口扫描技术是一种融合了信息安全、信息科学、和计算机技术为一体的综合性技术。本系统建立在WINDOWS操作系统上,有Ping 和scan两个模块。可以探测目标主机是否开机和对目标主机的端口信息进行探测,并获取端口是否开放等信息。全文对TCP建立连接的原理,WINSOCK原理,端口扫描技术的基本原理和扫描方式都进行了比较详细的介绍。在具体的实现过程中,结合面向对象的程序设计思想,采用典型的TCP connect()扫描技术。通过本程序的实现,用

2、户可以对一台目标主机进行端口扫描,获取端口信息。关键词: 端口;探测;扫描Design and Implementation of a Port Information Probe ToolAbstractScanning technique of port is a Synthetic technique which involves information security, information science, and computer technology .This system is build on the WINDOWS operate system. It has the

3、 Ping and scan modules .It can probe into whether a target host is opening and Probe into the port information of the target host, and obtain the information with whether a port is opening. The full text explain in detail with principle of the TCP connection, principle of the WINSOCK, the basic prin

4、ciple of the port scan and the scan method .When implementing, it combine the thought of the face to object, use the typical method which is the TCP connect .Through the realization of this procedure, the user can scan the port with a target host, and obtain information. Key word: Port;Probe;Scan目 录

5、 论文总页数:28页 1引言11.1端口信息探测的背景11.2端口信息探测工具的设计要求11.2.1研究内容11.2.2开发工具11.2.3软件功能设计11.3端口信息探测工具的设计原则12理论基础22.1 TCP传输控制协议22.1.1TCP概述22.1.2 TCP首部22.1.3 TCP连接的建立32.1.4 TCP连接的终止42.2 端口扫描技术52.2.1概述52.2.2端口扫描原理52.2.3端口扫描常用方式介绍52.3 WINSOCK套接字72.3.1 WINSOCK72.3.2 WINSOCK原理72.3.3套接字类型82.3.4使用套接字流程83总体设计93.1模块划分93.1

6、.1功能模块图93.1.2主要功能模块介绍93.2设计实现流程图104 端口信息探测工具的详细设计与实现104.1 软件界面104.2 PING按钮实现114.2.1 ping按钮实现流程图114.2.2 ping按钮总体实现过程124.3 scan按钮实现134.3.1 scan按钮实现流程图134.3.2 scan按钮总体实现过程145软件测试165.1测试的目的和定义165.1.1测试的目的165.1.2测试的定义175.2端口信息探测工具测试计划175.2.1测试环境175.2.2测试项目及说明175.3端口信息探测工具测试计划执行情况175.3.1 ping模块测试结果175.3.2

7、 scan模块测试结果195.4端口信息探测工具需求测试结论205.5评价20结 论20参考文献20附 录21致 谢27声 明281引言1.1端口信息探测的背景信息技术的广泛应用,深刻的改变了人们的生活方式,推动着文明的的进步。随着信息化的普及和发展,互联网覆盖了社会政治,经济,文化,生产的各个领域,网络攻击充斥着大大小小的网络中。无论黑客和红客,应用各种网络攻击方式,对目标方进行,刺探,侦听,欺骗和侵入,已达到己方的目的。而在网络攻击之前,如何有效查知被攻击方的有用信息是必要的不可缺少的,所以端口扫描技术孕育而生。1.2端口信息探测工具的设计要求1.2.1研究内容(1)TCP/IP协议,TC

8、P连接的建立与终止的过程。(2)WINDOWS网络编程,winsocket的使用。(3)端口扫描原理,各种端口扫描方式。(4)研究对一个端口信息探测工具的需求分析,模块划分,功能实现、开发步骤等,并能够对设计的过程进行总结、说明。1.2.2开发工具本软件采用Microsoft Visual C+ 6.0进行开发,完成一个能够获得端口信息的探测工具。1.2.3软件功能设计(1)ping:输入目标主机ip,能够测试ping目标主机是否成功,判断目标主机是否开机。(2)scan:输入起止端口号,当ping测试成功后进行扫描,得到目标主机的端口信息。可以知道那些端口是开放的,哪些没有开放。(3) 将结

9、果信息输出到列表。1.3端口信息探测工具的设计原则(1)应用性:设计本软件,应首先考虑能满足使用者的功能要求和实际应用的需要。(2)易操作性: 软件以一个简洁的界面,简单的几个按钮就能够实现测定目标主机和端口的扫描,以及信息列表等。方便与用户的操作。(3)可靠性和稳定性:在系统设备、网络设计、软件设计等各个方面要充分考虑可靠性和稳定性。在设备方面,要保证软件、硬件的可靠性。必须考虑采用成熟的技术和产品。在设备和程序设计的各个方面都尽量减少故障的发生。(4)整体性:系统的整体性,涉及到方方面面,对于端口扫描这样的软件必须对这些因素统筹考虑,以构成一个有机的整体。2理论基础2.1TCP:传输控制协

10、议2.1.1TCP概述传输控制协议 TCP 是 TCP/IP 协议栈中的传输层协议,它通过序列确认以及包重发机制,提供可靠的数据流发送和到应用程序的虚拟连接服务。与 IP 协议相结合, TCP 组成了因特网协议的核心。由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 TCP 的“端口号”完成的。网络 IP 地址和端口号结合成为唯一的标识 , 我们称之为“套接字”或“端点”。 TCP 在端点间建立连接或虚拟电路进行可靠通信。TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路

11、复用技术等。TCP 通过面向连接的、端到端的可靠数据报发送来保证可靠性。 TCP 在字节上加上一个递进的确认序列号来告诉接收者发送者期望收到的下一个字节。如果在规定时间内,没有收到关于这个包的确认响应,重新发送此包。 TCP 的可靠机制允许设备处理丢失、延时、重复及读错的包。超时机制允许设备监测丢失包并请求重发。2.1.2 TCP首部TCP向应用层提供一种面向连接的,可靠的字节流服务。每个TCP段都包含源端和目的端的端口号,用来寻找发端和收端的应用进程。这两个值加上IP首部中的源IP地址和目的端的IP地址唯一确定一个TCP连接。数据被封装在一个IP数据报中,TCP首部的数据格式如图1,16位源

12、端口号32位序号32位确认序号FINSYNRSTPSHACKURG保留6位4位首部长度16位窗口大小16位紧急指针16位检验和选项数据16位目的端口号 图1 TCP首部2.1.3 TCP连接的建立TCP是面向连接的协议。运输连接是用来传送TCP报文的。TCP的运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。因此,TCP的数据传输过程就有三个阶段,即:连接建立、数据传送和连接释放。 在这三个过程中,TCP首部的6位标志字段起到了非常重要的控制作用,下面就是他们的代表的意义(均是置1有效): URG:和紧急指针配合使用,发送紧急数据; ACK:确认号是否有效; PSH:指示发送方和接收

13、方将数据不做缓存,立刻发送或接收; RST:由于不可恢复的错误重置连接; SYN:用于连接建立指示; FIN:用于连接释放指示。 在连接建立阶段,首先需要解决的问题便是建立连接的延迟重复问题。在复杂的网络拓扑环境下,重复分组有可能因为时延而被存储在子网中,并在很久以后突然出现。这就使出现重复连接成为可能。为解决这一点,TCP建立连接就采用了三次握手的方式。如图2:SYN,ACK,SEQ=y,ACK=x+1ACK,SEQ=x+1,ACK=y+1确认确认连接请求主机A主机BSYN,SEQ=x 图2 连接建立在三次握手连接建立过程中,首先,客户端(图中主机A)要向服务器端(图中主机B)发送连接请求报

14、文段,其首部的同步比特SYN应置为1,同时选择一个序号x,表明在后面传送数据时的第一个数据字节的序号是x。在图中一个从A到B的箭头上标有“SYN,SEQ=x”就是这个意思。服务器端在收到连接请求报文后,如同意,则发回确认。在确认报文段中应将SYN置为1,确认号应为x+1,同时也为自己选择一个序号y。最后,客户端在收到此报文后,还要向B发出确认,其确认号为y+1。2.1.4 TCP连接的终止在数据发送完毕之后,就将进入连接释放阶段。与建立连接不同的是通信的双方都可以发出连接释放请求,并且不再发送数据(如图3)。假设主机A先向对方发出连接释放请求。这时主机A要做的便是向主机B发送首部终止比特FIN

15、为1的报文,其序号x等于前面已传送过的数据的最后一个字节的序号加1。紧接着,主机B在收到此请求后要发出确认,其序号为x+1,同时通知高层应用进程。这样从A到B的连接就释放了,连接处于半关闭(half-close)状态,即主机A不能再向B发送数据,但主机B可以向A发送数据。之后,若主机B也完成数据发送过程,便也将进入连接释放阶段以释放那另一半连接。这时,主机B将向主机A发送连接释放请求报文,此报文的首部也将把FIN比特置1,并且序号为y等于前面已传送过的数据的最后一个字节加+1,另外 还必须重复上次已发送过的ACK=x+1。主机A必须对此发出确认,给出ACK=y+1。这样才能把从B到A的反向连接

16、释放掉。同时,主机A也要向应用进程报告。至此,整个连接才全部释放掉。整个过程如图3:确认应用进程释放连接B不再发送报文A不再发送报文FIN,SEQ=xACK,SEQ=y,ACK=x+1FIN,ACK,SEQ=y,ACK=x+1ACK,SEQ=x+1,ACK=y+1主机A主机B应用进程释放连接确认通知主机应用进程 图3 连接终止2.2 端口扫描技术2.2.1概述端口扫描就是一种检查目标系统开放的TCP或者UDP端口的信息收集技术。他的基本方法是向目标机器的各个端口发送连接的请求,根据返回的响应,判断在目标机器上是否开放了这个端口。而当前比较有名的扫描工具有superscan、nmap等。2.2.

17、2端口扫描原理TCP由于其connection oriented的特性,为端口的扫描提供了基础。从上一节介绍TCP时我们知道,TCP建立连接时有三次握手。先是client端往server某端口发送请求连接的sym包,server的该端口如果允许连接,会给client端发一个回包ack,client端收到server的ack包后再给server端发一个ack包,TCP连接正式建立。基于连接的建立过程,可以想到,假如要扫描某一个TCP端口,可以往该端口发一个sym包,如果该端口处于打开状态,我们就可以收到一个ack,也就是说,如果收到ack,就可以判断目标扫描出于打开状态,否则,目标端口处于关闭状

18、态。这就是TCP端口扫描的基本原理。2.2.3端口扫描常用方式介绍(1)TCP SYN扫描:SYN扫描是最受欢迎的扫描方式。它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口。 SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP连接。它可以应对任何兼容的 TCP协议栈。它还可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的) 状态。它常常被称为半开放扫描,因为它不打开一个完全的TCP连接。它发送一个SYN报文,就像真的要打开一个连接,然后等待响应。 SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监

19、听者。如果数次重发后仍没响应,该端口就被标记为被过滤。如果收到ICMP不可到达错误 ,该端口也被标记为被过滤。(2)TCP connect()扫描:这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功.否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用

20、非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接出错的服务消息,并且能很快的使它关闭。(3) TCPFIN()扫描:有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。并

21、且这种方法在区分Unix和NT时,是十分有用的。对于这种扫描,如果收到一个RST报文,该端口被认为是 closed(关闭的),而没有响应则意味着端口是open|filtered(开放或者被过滤的)。如果收到ICMP不可到达错误,该端口就被标记为被过滤的。扫描的关键优势是它能躲过一些无状态防火墙和报文过滤路由器。另一个优势是这种扫描类型甚至比SYN扫描还要隐秘一些。(4)分片扫描:它本身并不是一种新的扫描方法,而是其他扫描技术的变种,特别是SYN扫描和FIN扫描。思想是,把TCP包分成很小的分片,从而让它们能够通过包过滤防火墙。注意,有些防火墙会丢弃太小的包。而有些服务程序在处理这样的包的时候会

22、出现异常,或者性能下降,或者出现错误。(5)reverse-ident扫描Ident协议使得可以发现任何一个通过TCP连接的进程的所有者的用户名,即使该进程并没有发起该连接只有在TCP全连接之后才有效。(6)UDP ICMP端口不可达扫描:开放的UDP端口并不需要送回ACK包,而关闭的端口也不要求送回错误包,所以利用UDP包进行扫描非常困难,有些协议栈实现的时候,对于关闭的UDP端口,会送回一个ICMP Port Unreach错误。它的缺点是速度慢,而且UDP包和ICMP包都不是可靠的需要root权限,才能读取ICMP Port Unreach消息。2.3 WINSOCK套接字2.3.1 W

23、INSOCKWindows Sockets 是从 Berkeley Sockets 扩展而来的,其在继承 Berkeley Sockets 的基础上,又进行了新的扩充。这些扩充主要是提供了一些异步函数,并增加了符合WINDOWS消息驱动特性的网络事件异步选择机制。Windows Sockets由两部分组成:开发组件和运行组件。开发组件:Windows Sockets 实现文档、应用程序接口(API)引入库和一些头文件。运行组件:Windows Sockets 应用程序接口的动态链接库(WINSOCK.DLL)。 2.3.2 WINSOCK原理在TCP/IP网络中两个进程间的相互作用的主机模式是

24、客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:(过程如下)(1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。(2)等待客户请求到达该端口。(3)接收到重复服务请求,处理该请求并发送应答信号。(4)返回第二步,等待另一客户请求。(5)关闭服务器。客户方:(1)打开一通信通道,并连接到服务器所在主机的特定端口。(2)向服务器发送服务请求报文,等待并接收应答;继续提出请求。(3)请求结束后关闭通信通道

25、并终止。2.3.3套接字类型(1)SOCKET_STREAM:双向可靠数据流,对应TCP(2)SOCKET_DGRAM:双向不可靠数据报,对应UDP(3)SOCKET_RAW:是低于传输层的低级协议或物理网络提供的套接字类型,可以访问内部网络接口。例如接收和发送ICMP报。2.3.4使用套接字流程Socket建立流式套接字返回套接字号SBind套接字S与本地地址相连Listen()通知TCP服务器准备接收连接Accept()接收连接准备客户端的连接建立连接,accept()返回,得到新套接字如NSRecv()/send()在套接字ns上读写数据,数据交换Closesocket()关闭套接字ns

26、Closesocket()关闭最初套接S,连接结束Closesocket()关闭套接字ns,结束TCP对话send()/Recv()在套接字ns上读写数据,数据交换Connect()将套接字S与远程主机连接Socket()建立流式套接字号S服务端客户端图4 面向连接的套接字流程Socket()建立流式套接字,返回套接字号SBind()套接字S与本地地址相连Recv()/send(),在套接字ns上读/写数据Closesocket()关闭套接字nsSocket()建立流式套接字,返回套接字号SBind()将套接字S与远程主机相连Send()/recv(),在套接字上写/读数据Closesocke

27、t()关闭套接字S,结束TCP对话服务端客户端 图5 无连接协议套接字流程3总体设计3.1模块划分3.1.1功能模块图端口信息探测工具pingscan目标ip地址开始端口号结果显示清空列表list结束端口号图6 功能模块图3.1.2主要功能模块介绍本设计主要包含Ping和Scan两大功能。(1)Ping模块能够检测目标主机的状态,看目标主机是否可达。由用户输入一个目标主机的IP地址,点击ping 按钮后,能够进行测试,连接成功或不成功都回返回信息到软件的列表框。(2)Scan完成对指定IP主机的端口信息的扫描,能够测试哪些端口开放,哪些端口关闭。并把结果输出到列表框。在Ping测试完成后,这个

28、模块方可使用。开始3.2设计实现流程图 是否输入目标IP重新输入IPPING清空列表结果列表开始和结束端口SCAN是否通过退出图7 设计实现流程图4 端口信息探测工具的详细设计与实现4.1 软件界面本软件编译通过,界面如下图:图8 界面4.2 PING按钮实现开始4.2.1 ping按钮实现流程图是否输入目标IP重新输入IP点击PING按钮扫描按钮有效是否通过测试结束 图9 PING按钮实现流程4.2.2 ping按钮总体实现过程(1)调用UPDATEDATE(TRUE)函数,更新成员变量。(2)然后用GetAddress()函数来获取输入的IP地址,并且判断输入的IP地址是否合法,合法的话,

29、把输入的IP地址转换成标准的IP地址格式,并存入字符串RouteIP中。(3) NewPing(),带入参数目标IP地址,跳跃数,往返时间,完成一个测试连接。(4)调用GetRTTAndHopCount()函数,是一个WIN32API标准函数,能够在规定的时间内检查网络是否畅通。它包含四个参数,分别为:目标IP地址,到目的地的跳跃数,最大跳数和到目的地的往返时间。如果返回1,则说明网络畅通,这时输出某某IP地址测试成功;如果返回0,就说明网络不畅通。(5) GetDlgItem(IDC_BTN_SCAN)-EnableWindow(TRUE),使得扫描按钮有效。如果前面某某IP地址测试不通过,

30、扫描按钮不起效。PING按钮主要源程序如下:this-UpdateData(TRUE); DWORD dwip=0; m_EditScanIP.GetAddress(dwip); if(dwip24)&0xff,(dwip16)&0xff,(dwip8)&0xff,(dwip)&0xff); ia = inet_addr(RouteIP); rc = NewPing(ia,(ULONG*)&m_hops_count,(ULONG*)&m_rtt); m_destip=RouteIP;if (rc = 1)CString info;info.Format(IP地址:%d.%d.%d.%d 连接测

31、试通过!,(dwip24)&0xff,(dwip16)&0xff,(dwip8)&0xff,dwip&0xff);m_ListRichEdit.AddString(info);GetDlgItem(IDC_BTN_SCAN)-EnableWindow(TRUE); elseCString info; info.Format(IP地址:%d.%d.%d.%d 测试未通过!,(dwip24)&0xff,(dwip16)&0xff,(dwip8)&0xff,dwip&0xff);m_ListRichEdit.AddString(info);AfxMessageBox(输入的IP地址不存在);GetD

32、lgItem(IDC_BTN_SCAN)-EnableWindow(FALSE);int NewPing(IPAddr ia, ULONG *hops_count, ULONG *rtt) boolean IsOk;IsOk = GetRTTAndHopCount(ia, hops_count,128, rtt);if (IsOk = TRUE) return 1; return 0; 4.3 scan按钮实现4.3.1 scan按钮实现流程图否是开始和结束端口输入是否正确点击SCAN按钮重新输入端口号扫描端口输出结果 图10 SCAN按钮实现流程4.3.2 scan按钮总体实现过程(1)依旧

33、调用UPDATEDATE(TRUE)函数,更新成员变量。(2)接着判断输入的断口值,输入端口范围是0-65530,不符合或者开始端口大于结束端口,都回弹出错误信息。(3)如果符合标准,则开始调用WIN32API的标准创建线程函数AfxBeginThread(),创建一个线程。(4)然后创建一个定时器SetTimeOut()。(5)调用AfxSocketInit(),初始化WINSOCKET(6)初始化成功以后,调用Create元函数,之后后会构造一个socket对象来创建WINDOWS socket ,然后Create会自动调用Bind,把socket和指定的地址绑定,然后socket就会提供

34、SOCK_STREAM和SOCK_GDREAM两种模式。本设计用的是基于TCP的STREAM模式。(7)成功以后调用Connect(),将套接字S与目标主机建立连接。如果连接成功,则在LIST中输出某某端口已开启。(8)调用KillTimeOut(),关闭连接,销毁记时器。(9)delete sock(10)端口地址自加1。SCAN按钮主要源程序如下:this-UpdateData(TRUE); if(m_EditEndPort65530)m_EditEndPort=65530;else if(m_EditEndPort65530) m_EditStartPort=65530;else if(

35、m_EditStartPortm_EditEndPort)AfxMessageBox(开始端口大于结束端口,请重新输入扫描端口段!);return ;this-UpdateData(FALSE); scanthread = AfxBeginThread(PortScanThreadProc, this);UINT PortScanThreadProc(LPVOID pParam) CPortScanView *sview=(CPortScanView *)pParam; DWORD beginport=sview-m_EditStartPort;DWORD endport=sview-m_Ed

36、itEndPort; CString info;CString RouteIP;RouteIP=sview-m_destip; CTimeOutSocket* sock=NULL;AfxSocketInit();while (1) sock = new CTimeOutSocket();sock-SetTimeOut(5000);if (!sock-Create() return 1;if (sock-Connect(RouteIP,beginport) info.Format(IP地址:%s 端口%d已开启!,RouteIP,beginport); sview-m_ListRichEdit.

37、AddString(info);else info.Format(IP地址:%s 端口%d未开启!,RouteIP,beginport);sview-m_ListRichEdit.AddString(info);sock-KillTimeOut();delete sock;sock=NULL;beginport+=1;if(beginportendport)return 0;BOOL CTimeOutSocket:SetTimeOut(UINT uTimeOut)m_nTimerID = SetTimer(NULL, 0, uTimeOut, NULL); return m_nTimerID;

38、BOOL CTimeOutSocket:KillTimeOut()return KillTimer(NULL, m_nTimerID);5软件测试5.1测试的目的和定义5.1.1测试的目的经过软件分折与设计后。就可以根据现有的设计在具体的环境中实现,生成系统的源代码、可执行程序。然后需要对软件进行测试和排错,保证软件符合预定的要求。获得一个无错的实现,调试的结果将确认所完成的软件可以真正使用。最后,软件测试的任务是在真实的使用运行环境中配置,调试软件,解决软件正式使用前,可能存在的任何问题。5.1.2测试的定义主要方法有审阅,检查。对软件进行静态测试。因为本软件是自己设计的,自己参与了其全部的

39、设计过程,对软件的逻辑结构,编程思想,代码编写都熟悉。从ping按钮开始,逐步查看各功能模块的设计及完成功能的技巧和编程思路,代码实现5.2端口信息探测工具测试计划5.2.1测试环境一台计算机,在系统中安装Microsoft Visual C+ 6.0.计算机配置:奔腾4 2.4G 256M内存操作系统:Windows 2000/XP/20035.2.2测试项目及说明 (1)ping模块测试主要测试ping按钮完成的功能。在输入IP后,能不能将目标主机返回的信息反映在LIST中。 (2)Scan模块测试 测试能不能对目标主机进行端口扫描。将获得的端口信息反映到LIST表中。5.3端口信息探测工

40、具测试计划执行情况5.3.1 ping模块测试结果在软件的IP地址栏内输入需要扫描主机的IP地址,比如192.168.1.231,输入想要扫描的起始端口和结束端口号,比如130-140。如下图:图11 输入端口号点击ping按钮,ping通会提示成功信息,失败会提示失败信息:图12 ping测试成功此时提示连接成功,并且扫描按钮有效。失败会提示连接测试未通过。如果输入的端口号或IP有误会提示:图13 输入端口号错误5.3.2 scan模块测试结果ping测试成功以后,在开始端口和结束端口处输入端口号,比如130-140,点击扫描按钮,结果如下:图14 扫描结果在LIST表中会显示出目标IP的哪

41、些端口是开放的,而哪些端口是关闭的。点击清空列表按钮,清空列表信息。5.4端口信息探测工具需求测试结论经过软件的测试,系统基本上达到需求定义阶段设计目标所提出的要求。5.5评价软件基本达到设计要求,软件功能完整,用户界面良好,错误处理正确,且能正确提示错误种类。但是在测试中也发现软件的一些不足与缺陷,比如考虑不周全,没有起用多线程等等一些缺陷,需要在软件进一步修改和维护时予以纠正。总的来说,软件通过测试。结 论端口信息探测工具,从技术和实现两个方面,对TCP协议,端口扫描原理,套接字原理进行了深入的分析和设计,并对开发思想和技术实现情况做了详细描述。首先介绍了当前开发端口信息探测工具的意义,接

42、着分析了TCP三次握手建立连接的原理以及过程,以及端口扫描的主要原理和过程,套接字的原理。选取了一个研究的主要问题怎样利用三次握手来进行端口扫描,然后就具体的设计方面的内容做了一定介绍,给出了设计的实现方法并最后对本设计进行了一些测试。本项目已经完成端口探测工具的基本开发。其功能基本符合设计目标,能够完成通过对目标端口进行扫描来获得端口信息的预期功能。在本次设计中,由于自己此方面知识不够全面和时间上的问题,使得软件还存在一些不足。比如没有打开多个线程。本设计今后主要工作重点是完整实现,在打开多个线程方面,能够用这种方法来加快扫描的速度。参考文献1 W.Richard Stevens(美).TC

43、P/IP详解M.北京:机械工业出版社,2005。2 郑丽,董渊C+语言程序设计M.北京:清华大学出版社,2004。3 张炯.windows网络编程实用技术与实例分析M.北京:清华大学出版社,2002。4 Stanley,BLippman Barbara E,Moo Jose Lajoie(美).C+primer中文版M.北京:人民邮电出版社,2006。5 蒋爱军,李师贤,梅小勇.C+primer习题解答M.北京:人民邮电出版社,2007。6 贾斌.网络编程技巧与实例M.北京:人民邮电出版社,2004。 附 录系统源代码:#include stdafx.h#include PortScan.h#include TimeOutSocket.h#include PortScanDoc.h#include PortScanView.h#include /winsock API的头文件#include iphlpapi.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号