收藏 分享(赏)

本地监听与远程端口扫描的设计与开发.doc

上传人:wo7103235 文档编号:6152697 上传时间:2019-03-30 格式:DOC 页数:23 大小:317KB
下载 相关 举报
本地监听与远程端口扫描的设计与开发.doc_第1页
第1页 / 共23页
本地监听与远程端口扫描的设计与开发.doc_第2页
第2页 / 共23页
本地监听与远程端口扫描的设计与开发.doc_第3页
第3页 / 共23页
本地监听与远程端口扫描的设计与开发.doc_第4页
第4页 / 共23页
本地监听与远程端口扫描的设计与开发.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、本地监听与远程端口扫描的设计与开发摘 要随着 Internet 的不断发展,信息技术已成为社会进步的巨大推动力。不管是存储于服务器里还是流通于 Internet 上的信息都已成为一个关系事业成败的关键,这就使保证信息的安全变得格外重要。本地监听与远程端口扫描程序就是在基于 Internet 的端口扫描的基础上,开发的一个基于 java 的本地监听和远程端口扫描的小程序。该程序主要包括四个功能模块:显示当前系统信息;显示网络状态;显示当前进程;扫描计算机。其中当前系统信息和网络状态可以反应出当前计算机的系统配置和网络设置,让用户可以直观便捷的了解主机状况。而本地监听实现对正在运行进程的监听和进程

2、分析。远程端口扫描用来对本机或远程主机的端口开放状态进行检测。通过使用以上四个功能可以使用户对本机的安全程度有更好认识,也可以对目标主机的开放状况有更直观的了解。关键词:端口扫描;Java;进程Design and Implementation of Local Monitoring and Remote Port Scan Abstract With the development of internet, information technology has been a huge push to social advancement. Information stored in serv

3、er or flowing in Internet has been a key related to the accomplishment of work. So it becomes especially important to assure security of information. Local listening and remote port scan program is developed in java language .This program includes four function modulescurrent system information show

4、ing module, current networking state showing module, current progress showing module and computer scanning module. Modules of system information showing and networking state showing can display computers system configuration and networking setting, which can help user get the state of the computer.

5、Local listening listens to and analyzes running progress. Remote port scan can test port states of local machine and remote machine. By using the following four functions, user can know deeply in the safe state of host , and know more about goal machines state directly. Key words :port scanning;Java

6、 ;process 目 录论文页数:19页1 引言 11.1 课题背景 11.2 课题研究意义 11.3 与以往的程序的区别 12 基本理论 22.1 TCP/IP 协议和 IP 地址 22.2 用 TCP/IP 进行通信的示意图 .32.3 端口 32.4 JAVA Socket 类 33 系统功能模块设计与实现 43.1 体系结构与功能介绍 43.1.1 体系结构 43.1.2 功能大体介绍 43.2 程序主界面 53.3 当前系统信息界面 63.4 网络状态程序界面 73.5 本地监听 73.6 远程端口扫描 83.6.1 Socket 类编程机制 .83.6.2 功能详解 .104 系

7、统关键点测试 .14结 论 17参考文献 .17致 谢 .18声 明 .191 引言1.1 课题背景互联网与生俱有的开放性、交互性和分散性特征使人类所憧憬的信息共享、开放、灵活和快速等需求得到满足。网络环境为信息共享、信息交流、信息服务创造了理想空间,网络技术的迅速发展和广泛应用,为人类社会的进步提供了巨大推动力。然而,正是由于互联网的特性,产生了许多安全问题。本地监听与远程端口扫描统互相配合,能够有效提高网络的安全性。通过对计算机的扫描,管理员可以了解主机的安全配置和运行的进程,及时发现安全漏洞,客观评估本地主机的风险性。管理员根据扫描和监听的结果,对存在的漏洞进行重新修复。在黑客进行攻击前

8、防范。如果防火墙和网络监控是被动的防御手段,那么本地监听和远程端口扫描则是主动防御手段,可以有效阻止黑客的攻击,做到防患于未然。1.2 课题研究意义网络中的每一台计算机如同一座城堡,在这些城堡中,有的对外完全开放,有的却是紧锁城门。入侵者们是如何找到,打开城门的呢?这些城门究竟通往何处呢?在网络技术中,把这些城堡的“城门“称之为计算机的端口,端口扫描是入侵者搜集信息的常用手法之一。扫描端口的目的如下:判断目标主机上开放了那些端口。判断目标主机的这些端口进行什么服务。掌握了这些信息后,入侵者能够使用相应的手段实现入侵。本程序即可以对本机正在运行的进程进行监听,并对自身的主机扫描,对结果进行分析,

9、找出漏洞,从而为之后的重新配置做好准备。利用平时所学的知识,将这个程序的各个功能实现。通过实践也可以进一步把所学的东西掌握牢固,找出其中不足的地方,在今后的学习生活中一步步的完善。1.3 与以往的程序的区别本程序与以往的程序的最大的区别主要是该程序是使用 Java 语言编译的。而决大部分该类似程序都是运用 VB 或者 VC 语言编写的。而用平时自己自学的Java 语言编写该程序对自身来说是一个挑战,也是检验知识掌握程度的一件工作。对于选择 Java 编译,主要是它有以下一些优点:1)面向对象性:面向对象是 Java 最重要的特性。跟新一代程序设计语言相比,Java 的面向对象性更加彻底,所有的

10、 Java 小程序和 applet 均是对象,其封装性实现了第 2 页 共 19 页模块化和信息隐藏,继承性实现了代码的复用,使用户可以建立自己的类库。 2)平台无关性:Java 的编译程序生成一种高级的、与机器独立的“机器码” (字节代码)它是针对由 Java 解释程序和运行时系统实现的虚拟机器而生成的,可以在任何支持 Java 解释器的操作系统平台上运行。因此,如果软件开发人员采用 Java,就没有必要为不同平台编写、编译并测试代码,从而可以大大节省开销;同样,用户在考虑购置字处理和出版软件时,也不必考虑软件制造商提供了什么支持环境。3)简洁性:Java 是一种面向对象的高级程序设计语言,

11、它特别注重简洁性 ,这个原则在电脑界被称为 KISS( Keep It Small and Simple) 。它没有预处理程序、# define 及相关的成份、首部(header)文件,且 Java 中无危险的指针运算,既减少了程序的复杂性,又增加了安全性。 Java 语言与 C+ + /C 有许多相似之处,但却比 C+ + /C 简单得多,不但易读易懂,而且代码的修改和重用也很容易;Java 语言无结构( structure)和联合( Union)这样的复杂数据类型,可以利用类的实例变量达到同样的效果;Java 语言也没有函数 (function) ,函数的功能可以通过定义一个类及为这个类建

12、立方法来实现。4)可移植性:序被编译后生成的并不是机器代码,而是生成字节代码 (Byte Code) 。字节代码是以 Java 虚拟环境(Java Virtual Machine)为基础的,Java 对每一个可能和系统软硬件相关的部分都作了明确的定义,这就消除了 C+/C 语言中数据类型的不确定性(例如整数类型 int 在不同的系统中可能会有16bit,32bit 或 64bit 等不同的长度) 。Java 语言环境本身也容易移植到新的体系结构和操作系统 ,其编译程序也是用 Java 语言编写的,它运行时的系统是用 ANSI C 编写的,带有清晰的可移植边界。5)安全性:Java 语言摒弃了

13、C+/C 中大量过于复杂、容易导致编程错误和影响系统安全的部分,例如不再支持在 C+/C 中常用的指针操作、内存动态( malloc 和 free)分配等功能。 Java 程序在执行时会对自身作严格的检查以防止任何非法的修改,因而它具有良好的防病毒和防止网络非法入侵的能力。2 基本理论2.1 TCP/IP 协议和 IP 地址进入 Internet 联结的计算机必须根据网络要求遵循有关通信协议全球的Internet 网就是基于 TCP/IP 协议,在网络中的各个计算机通信存在最基本问第 3 页 共 19 页题就是如何识别与之通信的计算机,像城市中的街道内各户编号一样,IP 地址是 TCP/IP

14、中用于唯一标识一台计算机的编号,IP 地址提供对网络中计算机的标识以及它所在的网络。2.2 用 TCP/IP 进行通信的示意图在 TCP/IP 的应用层协议使用的是客户服务器方式。客户(Client)和服务器(Server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。当 A 进程需要 B 进程的服务时就主动呼叫 B 进程,在这种情况下,A 是客户而 B 是服务器。这里最重要的特征就是:客户是服务请求方,服务器是服务提供方。客户与服务器的通信关系一旦建立,通信就可是双向的,客户和服务器都可以发送和接收信息,如图 1 所示:图 1 TCP/IP 通信方式

15、当 TCP/IP 数据包到达目的地后,计算机首先去掉地址标志,利用 TCP 的装箱单检查数据在传输中是否有损失,如果接收方发现有损坏的数据包,就要求发送端重新发送被损坏的数据包,确认无误后再将各个数据包重新组合成原文件。就这样,Internet 通过 TCP/IP 协议实现了全球通信的功能。2.3 端口通常因特网中的某种服务对应某个协议,并与某个惟一的端口号关联在一起。端口由一个 16 位二进制整数表示,应用进程必须与该端口号绑定才能进行通信。1024 以下端口号保留为系统服务,其他为用户一般应用服务。2.4 JAVA Socket 类Socket 是著名的网络应用编程接口(API)之一,而

16、Java 语言是网络编程的主要语言,提供了强大和独特的网络通讯支持机制和能力。在 Java 网络编程中,Socket 层次,即传统网络编程经常采用的方式,通过在Client/Server(客户机/服务器)结构的应用程序之间建立 Socket 套接字连接,然后在连接之上进行数据通信,是一种经常采用的通信模式。套接字类型第 4 页 共 19 页Socket 根据其传输数据类型的不同,可以分为以 下 三 种 类 型:1)字节流套接字(Socket -stream),提供了一个双向的、面向连接的、可靠的、无差错的字节流通信,无重复的发送且按发送顺序接收。内设流量控制,避免数据流超限;不保持信息边界。实

17、现这种特性的通信协议在收到差错时将重传信息,若在连接已经切断后再发数据则返回错误信息,FTP 协议即采用流式套接字。2)数据报套接字 (Socket Dgram) ;提供了一个无连接服务,每个数据包都有地址。数据包以独立包形式被发送,但不保证顺序,不保证可靠或不重复。网络文件系统 NFS 使用数据报式套接字。3)原始数据套接字(Socket Raw) ,该接口允许对较低层次协议 ,如 IP、ICMP 直接访问。这不是给普通用户使用的,而是给要开发新协议或对低层协议有兴趣的人使用。3 系统功能模块设计与实现3.1 体系结构与功能介绍3.1.1 体系结构设计 C/S 模式的本地监听和远程端口扫描。

18、C/S 模式本地监听远程扫描系统共有 6 个 Java 源文件和 1 个 form 文件组成, form 文件是主类的窗口文件,由 IDE netbeans 自动生成。主类 MainJFrame.java 主要完成本地进程的实时枚举,相关开放端口的枚举功能;ThreadScan.java 主要完成多线程的远程主机扫描。其他的几个类文件主要是辅助类,以及方法实现类,用来完成响应的业务操作。3.1.2 功能大体介绍该程序有以下功能模块:本地监听:主要实现实时查看操作系统当前运行进程,并根据进程查看本机响应端口和远程计算机连接情况。用户可以实时枚举当前系统所有运行的进程,根据进程 id 和端口开放的

19、关系,查找开放的 TCP 及 UDP 端口。由于 java工作的虚拟机之上的,所以 java 并不能直接获得操作系统进程的句柄。这些操作只能通过操作系统 API 或者提供的接口程序运行,本次设计考虑到 java 本地接口和 Runtime 类运行操作系统自己提供的 shell/命令行(windows)两种方式。远程扫描:远程端口 Java socket 类与远程主机给定的端口范围,采用多线程逐个连接。如果能够连接上表示对方相应的端口开放,如果不能视为没有开放。暂时不考虑对方主机存在防火墙。用户可以设定每次扫描的线程数,线程数越大,对当前扫描主机,及网络的压力就越大,扫描的速度也相对比较快。第

20、5 页 共 19 页(程序规定扫描线程数为 1-200 的整数,默认线程数为 100) 。3.2 程序主界面图 2 主程序界面MainJFrame 类主要实现该程序的界面排版,将实现程序界面的所有的类封装在 com.text 包中。该包中将程序主界面分为三个部分,分别用不同的组件去实现,它包括菜单栏,滚动窗格,以及消息提示框的文本区控件,程序主界面如图 2 所示。每一部分所使用的类以及对象如表 1 所示。表 1 组件以及类对照表名 称 对 象 类菜单条 menu JMenuBar菜单 文件,操作 JMenu菜单项 本机信息,net, exit,当前进程信息,扫描计算机JMenuItem滚动窗格

21、 Pane13, tipPane JScrollBar文本区 psInfo JTextArea表格 table JTable首先在主窗体内创建轻量组件,如 menu=new javax.swing.JMenuBar()定义了整个菜单条对象,如 文件 = new javax.swing.JMenu(),操作 = new javax.swing.JMenu()则是创建的菜单对象,菜单对象之下的菜单项对象如 当前系统信息 = new javax.swing.JMenuItem();网络状态 = new javax.swing.JMenuItem();当前进程信息 = new javax.swing.

22、JMenuItem();扫描计算机 = new javax.swing.JMenuItem()则是可以发生 ActionEvent 事件,第 6 页 共 19 页通过鼠标点击实现该程序的两个主要功能:本地监听与远程端口扫描。3.3 当前系统信息界面 图 3 当前系统信息在 Java 应用程序运行时,特别是需要在跨平台工作环境下运行时,需要确定操作系统类型、用户 JDK 版本和用户工作目录等随工作平台变化的信息,来保证程序正确运行。一般情况下,可以利用 JDK 提供的系统属性类(Properties)中的方法,快速地获取工作环境信息。另外,程序开发人员还可以定义与应用程序相关的系统属性文件,在用

23、户程序执行过程中动态地加载程序员定义的属性文件来控制程序运行。主要功能显示操作系统的各种信息,以上的操作系统信息,系统版本,Java,jre 安装路径,当前用户名都是通过使用 System.getProperty()方法得到的,然后输出到创建的文本区中。比如获得系统名,可以通过调用方法System.getProperty(“os.name”);系统版本通过调用方法System.getProperty(“os.version“)获得。String headers=“操作系统“,“系统版本“,“java 虚拟机版本“,“jre 安装路径“,“当前用户名“ ;Properties prop = ne

24、w Properties(System.getProperties();/在标准输出中输出系统属性的内容/prop.list(System.out);StringBuffer sys=new StringBuffer();contents00=System.getProperty(“os.name“);contents01=System.getProperty(“os.version“);contents02=System.getProperty(“java.vm.version“);contents03=System.getProperty(“java.home“);contents04=S

25、ystem.getProperty(“user.name“);contents05=System.getProperty(“os.name“);dm.setDataVector(contents,headers);table.setModel(dm);第 7 页 共 19 页3.4 网络状态程序界面图 4 网络状态界面 该功能主要显示当前网络的各种配置信息,如主机名,物理地址,ip 地址,子网掩码等数据。通过调用系统本身的可执行程序ipocnfig.exe,nbtstat.exe 来实现网络状态的功能。而实现对系统程序的调用则离不开 Java 本身丰富的类。Prcess 是 java.Lang

26、 包中的一个类,可以使用该包中的 Runtime 类调用其静态方法 exec 得到 Process 的一个实例,exec方法可以运行一个可执行文件,即启动一个进程(如 ipconfig 与 nbtstat 命令),exec 方法返回一个 Process 对象。一个 Process 对象可以使用个getInputStream()方法获得该进程的输入流。利用 Process 中的流,获得该网络的信息。/ Process pp = Runtime.getRuntime().exec(“nbtstat -a “ + ipAddress);Process pp = Runtime.getRuntime(

27、).exec(“ipconfig /all “);InputStreamReader ir = new InputStreamReader(pp.getInputStream();LineNumberReader input = new LineNumberReader(ir);for (String str = input.readLine(); str != null; str = nextLines) /str对象通过 readLine()方法读取文本行,一直读取文本行的内容直到并显示内容直到下一文本行为空。 if(str!=null)netInfo.append(str+“n“);3.

28、5 本地监听它也可以显示当前进程的运行情况,如图 5 所示: 第 8 页 共 19 页图 5 本地监听界面由于 java 工作的虚拟机之上的,所以 java 并不能直接获得操作系统进程的句柄。这些操作只能通过操作系统 API 或者提供的接口程序运行。当要执行本机上的可执行文件时,如 tasklist.exe 时,这里使用 java.lang 包中的 Runtime 类。对象 process 调用 exec(“tasklist /v”)方法打开本机上上的可执行文件,然后将结果输入到文本区中。而这里 read()方法只读取其中的进程名称与进程号内容。String headers=“进程名称“,“

29、进程号“;.String s1 = “tasklist“;Process process = Runtime.getRuntime().exec(“tasklist /v“);/通过 Tasklist 命令是一个用来显示运行在本地或远程计算机上的所有进程的命令行工具。BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(process.getInputStream();/BufferReader 方法可以把一个流(对象)接到另一个流上,从中连续读取内容。也就是读完一个进程的进程名后接着读取它的进程号。S

30、tring nextLine;3.6 远程端口扫描主要扫描远端主机给定端口范围的开放情况,可指定 ip 及端口扫描范围,扫描线程数,线程范围现规定范围为 0-200,因为线程数过大会给当前主机造成过大压力,可能造成主机死机。第 9 页 共 19 页3.6.1 Socket 类编程机制随着计算机技术的发展,现在的操作系统多同时运行多个进程(或线程) 。Socket 机制成功的解决了两台主机不同进程之间的通信问题。下图是一个典型的面向连接的 Socket 通信机制示意图。它采用客户服务器模式,由服务器方先建立自己的半相关(建立 Socket 并将 Socket 联编到某个端口上) ,并进入监听状态

31、,同时监听是否有与自己端口相对应的连接请求。连接是客户方发送的这里户方在建立自己的半相关后,向服务器发起连接(调用方法 accept()) ;这样就建立起来一个完整的连接。该程序则是机制中的客户端,只要知道目的主机的地址,就可以进行端口扫描。 (不考虑防火墙) 。下面介绍两个主机之间通信是如何建立的。服务器端:主进程 1)创建一个 Socket,将其绑定到服务器本地址和一个已知协议端口上。让该端口保持非连接状态。 2)将该端口设置为被动式。 3)主进程守候在这个指定的端口上 ,等待收接客户机的连接请求。 4)当有来自客户端的连接请求时,向客户机发送应答并创建一个新的从进程来处理响应。返回 3)

32、 , 5)退出。从进程 : 1)由于接收到连接请求而被创建,即用于连接的 Socket。 2)根据用户的连接请求 ,决定利用该连接与客户机进行交互。 3)交互结束 ,关闭连接并退出。客户机端 : 1)创建一个用于远程通信的 Socket。代码如下所示:Socket theTCPsocket;2)发起一个到服务器进程的主动连接.theTCPsocket=new Socket(hostAddress,i);hostAddress 输入目标主机的 IP 或域名。3)利用该连接与服务器进程进行通信。4)通信结束,关闭连接并退出。本应用程序就是这个通信机制中的客户端。theTCPsocket.close

33、();机制如图 6 所示:第 10 页 共 19 页服务器 图 6 Socket 通信机原理Socket 和 ServerSocket 类库位于 包中。ServerSocket 用于服务器端,Socket 是建立网络连接时使用的,本应用程序就是一个客户端。3.6.2 功能详解连接成功时,应用程序两端都会产生一个 Socket 实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因在指定端口生成ServerSocket倾听客户端发来的请求根据服务器所在主机的 IP 地址和 port 生成一个 socket由得到的 socket 实例生成输入输出流向客户发送数

34、据关闭 socket有 socket 生成输入输出流向服务器发送数据从服务器接受请求关闭 socket连接请求服务请求服务应答客户机第 11 页 共 19 页为在服务器端或在客户端而产生不同级别。不管是 Socket 还是 ServerSocket它们的工作都是通过 SocketImpl 类及其子类完成的。本地主机端口扫描功能是查看本机的哪些端口属于打开状态,哪些是关闭状态。在界面的 ip 或域名处输入:localhost,端口范围的正确输入是 0-65535 的整数,而且输入的最小端口号小于输入的最大端口号。线程数则输入1-200 的整数。该程序可以正常运行:本地端口扫描界面如图 7 所示:

35、图 7 本机端口扫描指定主机(可达) ,输入正确的端口范围,正确的线程数,远程端口扫描界面如图 8 所示:图 8 远程端口扫描该程序主要由 TCPThread.java 实现。1) 包含 TCPThread 的 public 类,主要功能为启动端口扫描线程。根究用户输入的端口范围,线程数等信息进行扫描,并判断端口类型。2) 类 CancelAction:实现“退出”按钮的事件侦听。3) 类 SubmitAction:实现“开始扫描”按钮的事件侦听。包括判断各个文本框中数据的有效性,并启动相应的线程数开始扫描。第 12 页 共 19 页4) 类 OKAction:错误提示框中“确定”按钮的事件侦

36、听。如图 9 所示:图 9 类的结构网络编程的基本模型就是客户机到服务器模型。简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置(IP 或域名) ,而另一个则只需要知道这个固定的位置,并去建立两者之间的联系,然后完成数据的通讯就可以了。这里提供固定位置的通常称为服务器(被扫描的主机) ,而建立联系的就是客户端(主机) 。客户机必须知道有关服务器的 IP 地址。对于着一点Java 也提供了一个相关的类 InetAddress 该对象的实例必须通过它的静态方法来提供。它的静态方法主要提供了得到本机 IP 和通过名字或 IP 直接得到InetAddress 的方法。以上两种方式扫描

37、方式所包含的变量为:最小端口号 int MIN_port;最大端口号 int MAX_port;线程数 int threadnum;InetAdress 所含主机地址通过静态方法 getByName()获取。Internet 上的计算机,端口号标示正在计算机上运行的进程(程序) 。端口号与 IP 地址的组合得到一个网络套接字。端口号被规定为一个在 0-65535 范围内的整数。其中,0-1023 被预先定义的服务通信占用(如 telnet 占用端口号 23,http 占用 80 端口) 。TCPThread.javaTCPThread 类SubmitAction 类OKAction 类Canc

38、leAction 类该类从Thread 继承其中这三个类完成辅助功能,包含于TCPThread.java其中这三个类完成辅助功能,包含于TCPThread.java第 13 页 共 19 页public void run() /使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法 int i;/整型变量 i;Socket theTCPsocket;/ 此类实现客户端套接字,套接字是两台机器之间的通信端点for (i = MIN_port+threadnum; i MAX_port; i += Integer.parseInt(Thre

39、adScan.maxThread.getText()/将字符串参数作为有符号的十进制整数进行分析。文本内容用 parseInt() 就可以将最大线程数准换为对于的 int型数据 ThreadScan.status.setText(“扫描状态: 正在扫描 “+i+“ 端“);try theTCPsocket=new Socket(hostAddress,i);/参数 host 是服务器的 ip 地址,port 端口号;theTCPsocket.close();ThreadScan.Result.append(“ “+i);switch(i) case 21:ThreadScan.Result.a

40、ppend(“(FTP)“);?/当端口号为 21 则 FTP 服务在运行;break;case 23:ThreadScan.Result.append(“(TELNET)“);当端口为 23 则 telnet 服务在运行;break;case 25:ThreadScan.Result.append(“(SMTP)“);当端口为25 则 SMTP 服务在运行break;case 80:ThreadScan.Result.append(“(HTTP)“);当端口为80 则 HTTP 服务在运行;break;case 110:ThreadScan.Result.append(“(POP)“);端口

41、为 110第 14 页 共 19 页时,POP 服务在运行;break;case 139:ThreadScan.Result.append(“(netBIOS)“);当端口为 139 时,netBIOS 服务在运行;break; 4 系统关键点测试对系统的远程端口扫描功能进行健壮性的测试,主要对其容错性能进行一个测试,测试该程序是不是能够在正常情况下运转。因为能力和条件有限,所以测试次数比正规测试强度的要求差很远。这里之所以加入这个测试,主要目的是模仿一个软件生产的正规流程,而健壮性测试在其中是非常必要的。该部分针对端口扫描的各种不同情况进行了四种情况的测试:测试 1:当输入正确 ip 或域名

42、,正确的最小端口号和最大端口(端口号输入是 0-65535 的整数) ,正确的线程数(输入为 1-200 的整数) ,程序可以正常运行。当在 ip 或域名输入正确,线程数输入错误,端口号输入错误时系统会发生错误提示。根据本系统的健壮性要求对此进行了 8 次测试,下面根据测试的列举了 2次测试结果。当程序 ip 或域名处标准输入:localhost,端口范围标准输入:0-1000,线程数标准输入:100.该程序正常运行。当程序 ip 或域名处标准输入:localhost,端口范围错误输入:1.5-1000,线程数错误输入:100.3出现如图 9 所示提示框:图 10 报错提示框 1第 15 页

43、共 19 页分析:经 8 次不同类型及各类型的不同种输入的结果显示本功能点能达到百分百的可靠性。测试 2:当输入正确 ip 或域名,正确的最小端口号和最大端口(端口号输入是 0-65535 的整数) ,正确的线程数(输入为 1-200 的整数) ,程序可以正常运行.当输入错误的 IP 地址/域名,正确的最小端口号,最大端口号,正确的线程数时系统会发生错误提示。根据本系统的健壮性要求对此进行了 8 次测试,下面根据测试的列举了 2次测试结果。当程序 ip 或域名处标准输入:localhost,端口范围标准输入:0-1000,线程数标准输入:100.该程序正常运行。当程序 ip 或域名处错误输入:

44、258.0.25.3,端口范围标准输入:0-1000,线程数标准输入:100.出现如图 10 所示提示框:图 11 报错提示框 2分析:经 8 次不同类型及各类型的不同种输入的结果显示本功能点能达到百分百的可靠性。测试 3:当输入正确 ip 或域名,正确的最小端口号和最大端口(端口号输入是 0-65535 的整数) ,正确的线程数(输入为 1-200 的整数) ,程序可以正常运行。当在 ip 或域名输入正确,线程数输入正确,端口范围输入错误时系统会发生错误提示。根据本系统的健壮性要求对此进行了 8 次测试,下面根据测试的列举了 3次测试结果。当程序 ip 或域名处标准输入:,端口范围标准输入:

45、0-1000,线程数标准输入:100.该程序正常。第 16 页 共 19 页当程序 ip 或域名处标准输入:,端口范围标准输入:1000-0,线程数标准输入:100.出现如下图 11 所示提示框:图 12 报错提示框 3当程序 ip 或域名处标准输入:,端口范围标准输入:0-65536,线程数标准输入:100.出现如下图 12 所示提示框:图 13 报错提示框 4分析:经 8 次不同类型及各类型的不同种输入的结果显示本功能点能达到百分百的可靠性。测试 4:当输入正确 ip 或域名,正确的最小端口号和最大端口(端口号输入是 0-65535 的整数) ,正确的线程数(输入为 1-200 的整数)

46、,程序可以正常运行。当在 ip 或域名输入正确,端口号范围输入正确,线程数输入错误时系统会发生错误提示。根据本系统的健壮性要求对此进行了 8 次测试,下面根据测试的列举了 2次测试结果。当程序 ip 或域名处标准输入:localhost,端口范围标准输入:0-1000,线程数标准输入:100.该程序正常运行。第 17 页 共 19 页当程序 ip 或域名处标准输入:localhost,端口范围错误输入:0-1000,线程数错误输入:205 出现如图 13 所示提示框:图 14 报错提示框 5分析:经 8 次不同类型及各类型的不同种输入的结果显示本功能点能达到百分百的可靠性。结 论本课题主要利用

47、本地监听与远程端口扫描系统有效反应出计算机的安全状况,辅助用户管理计算机。其中系统配置查看功能和网络配置功能,帮助管理员直观了解主机系统配置和网络设置状况。本地监听实现对主机当前进程运行情况的枚举,反应出当前进程的 TCP、UDP 连接情况。远程端口扫描可以实现对本机或远程主机开放端口的扫描,找出潜在的漏洞。管理员根据扫描和监听的结果,自主对存在的漏洞进行重新修复,从而提高计算机的安全性。软件虽然实现了一些功能但是还是存在很多的问题和缺陷,但是我还是通过完成毕业设计使自己的能力得到很大的提高,并且充分体会到理论与实践之间的重要联系,进一步的了解了 Java 语言和网络基本知识。经过大学四年的学

48、习生活,毕业设计不仅是对我们所学知识的综合体现,而且是对诸多方面的一种总结,让我们更清楚的认识到了自己的不足之处,希望在以后的生活,工作中不断完善自我,提高自己的水平。参考文献1 孙一林,彭波.Java 网络编程实例M.北京:清华大学出版社 ,2003.4。2 殷兆麟.Java 网络编程M.北京:国防工业出版社,2001.5 。3 吴逸贤,吴目诚.Java2 程序设计M.南京:科学出版社,2003.8。4 刘弈等.基于 Socket 的 Java 语言网络通信机制和程序设计J.计算机应用工程,1999, (5)78 81。5 Douglas E. Comer,David L. Stevens美国TCP/ IP 网络互连技术M.北京:清华大学出版社,1998。第 18 页 共 19 页第 19 页 共 19 页致 谢本文是在昌燕老师的热情关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!在论文完成过程中,本人还得到了黎家洪老师和汤振华同学的热心帮助,本人向他们表示深深的谢意!最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!第 20 页 共 19 页声 明

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

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报