当前位置:文档之家› 基于多线程的端口、漏洞扫描工具的设计毕业设计

基于多线程的端口、漏洞扫描工具的设计毕业设计

目录1 引言1.1课题的来源、意义和目的 (1)1.2完成的内容与设计结果 (1)1.2.1 设计内容 (1)1.2.2 设计结果 (2)2 总体设计与实施方案2.1总体设计 (3)2.1.1 设计目标 (3)2.1.2 系统结构 (4)2.2实施方案 (4)2.2.1 开发平台和工具的选择 (4)2.2.2 方案实施步骤 (4)2.2.3 关键技术介绍 (5)3 系统的实现3.1准备阶段 (7)3.2主要功能、界面的设计 (7)3.2.1 系统菜单界面、功能的设计 (8)3.2.2 扫描系统界面、功能的设计 (10)3.2.3 端口扫描模块设计 (13)3.2.4 漏洞扫描模块设计 (21)3.2.5 弱口令扫描模块设计 (26)3.2.6 本地系统监控模块设计 (31)3.2.7 日志查询模块设计 (34)3.2.8 DOS工具集界面、功能的设计 (36)3.2.9 字典管理界面、功能的设计 (39)4 程序调试5 设计结果与改进要求5.1设计结果 (42)5.2改进要求及目标 (42)参考文献 (43)致谢 (44)1 引言1.1 课题的来源、意义和目的随着科学技术的发展,21世纪的人类已经生活在信息时代,计算机技术与网络技术已经深入到人类社会的各个方面。

近年来网络的迅速发展,给人们的生活带来了新的感受,同时人类社会对于网络的依赖性也越来越强。

信息技术的飞速发展给人们带来了极大的便利,同时也引入了巨大的安全隐患。

因此,网络安全问题越来越引起人们的广泛关注,并成为当今网络技术领域研究的重点。

目前,大多数的网络攻击,如:黑客攻击、木马、病毒都是通过安全漏洞侵入目标主机的。

如果我们能够根据具体的应用环境,尽可能早地通过网络扫描来发现这些漏洞,并及时采取适当的措施进行修补,就可以预防安全威胁的发生。

因此,网络安全管理者需要一套工具能够发现网络主机的脆弱性。

端口、漏洞扫描技术能够检测出网络中潜在的安全漏洞,从而使网络管理者一目了然,了解自身网络系统存在的问题。

根据当前网络安全现状和现有扫描技术的不足,本文提出了基于多线程的端口、漏洞扫描器的设计,来实现端口扫描、漏洞扫描、弱口令破解、日志分析等一系列功能,辅助网络管理者了解自身系统的安全现状。

1.2 完成的内容与设计结果1.2.1 设计内容本系统是根据当今网络中主机的脆弱性进行需求分析后,再开发设计的,具体实现的功能和要求如下:(1)对本地主机的进程进行监控,并能够管理;(2)对本地主机的实时信息做全面收集,并呈现出来;(3)利用多线程技术,对远程主机的端口进行扫描,包括:基本端口扫描、自定义端口扫描、网段存活扫描;(4)对远程主机的弱口令进行猜解,包括:FTP弱口令扫描、POP3弱口令扫描;(5)对远程主机的常见威胁、漏洞进行扫描评估;(6) 对扫描结果进行存储,提供丰富的日志分析;(7) 对猜解字典能够管理;(8) 系统界面要简洁,操作起来应简单;(9) 扫描效率要比较高。

1.2.2 设计结果本系统要求具有如下功能:(以下分四大模块)系统菜单模块:菜单界面,网络管理者可以使用系统扫描、DOS工具集、字典管理、系统介绍四项功能;系统扫描模块:网络管理者通过菜单界面选中系统扫描后,可以对本地系统进程、本地系统信息进行全面地管理。

同时还可以对远程系统进行端口扫描、漏洞扫描、弱口令猜解、日志分析等。

DOS工具集模块:用于对远程系统扫描的辅助测试,包含:ping、tracert、nslookup三个命令,用于远程系统连通性测试。

字典功能模块:网络管理者可对用于暴力猜解的字典进行管理,包括:修改、备份、恢复功能。

2 总体设计与实施方案2.1 总体设计2.1.1 设计目标通过对本地系统的监控以及对远程系统的安全扫描,来发现网络中主机的脆弱性,以便于及时发现问题再做出相应的响应措施。

系统安全扫描工具致力于对系统安全的脆弱性评估,应满足漏洞扫描、端口扫描、弱口令扫描、日志分析等功能,本系统在设计时应该满足以下几个目标。

(1)对本地主机的进程进行监控,并能够管理;(2)对本地主机的实时信息做全面收集,并呈现出来;(3)利用多线程技术,对远程主机的端口进行扫描,包括:基本端口扫描、自定义端口扫描、网段存活扫描;(4)对远程主机的弱口令进行猜解,包括:FTP弱口令扫描、POP3弱口令扫描;(5)对远程主机的常见威胁、漏洞进行扫描评估;(6) 对扫描结果进行存储,提供丰富的日志分析;(7) 对猜解字典能够管理;(8) 系统界面要简洁,操作起来应简单;(9) 扫描效率要比较高。

2.1.2 系统结构图2.1系统结构图2.2 实施方案2.2.1 开发平台和工具的选择本系统开发运行需要以下几个条件。

硬件平台:Thinkpad X201i 笔记本CPU:i3 2.5GHz内存:2G操作系统:Windows XP/Windows 2000/Windows 7 开发工具包:JDK Version1.6开发环境:Myeclipse8.0浏览器:IE7.0显示器分辨率:1280×8002.2.2 方案实施步骤(1)了解当前的网络现状,分析问题所在。

(2)了解用户的需求,反馈系统工具设计的可行性。

(3)设计出系统工具的大致界面,进行功能可行性分析。

(4)着手编程设计,具体实现需求分析中的各个功能。

(5)进行系统测试,完善功能并修复BUG。

2.2.3 关键技术介绍(1)Socket编程概述所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。

应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

以JDK-1.6为例,Socket和ServerSocket类库位于包中。

ServerSocket用于服务器端,Socket 是建立网络连接时使用的。

在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。

对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。

不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

重要的Socket API:.Socket继承于ng.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.6文档。

Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。

"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。

getInputStream方法获得网络连接输入,同时返回一个IutputStream 对象实例。

getOutputStream方法连接的另一端将得到输入同时返回一个OutputStream对象实例。

其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。

(2)多线程技术概述在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。

多线程处理一个常见的例子就是用户界面。

利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。

多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。

线程是在同一时间需要完成多项任务的时候实现的。

Java语言的多线程需要操作系统的支持。

Java 虚拟机允许应用程序并发地运行多个执行线程。

Java语言提供了多线程编程的扩展点,并给出了功能强大的线程控制API。

在Java中,多线程的实现有两种方式:扩展ng.Thread类实现ng.Runnable接口本设计利用的为扩展ng.Thread类方式来实现多线程。

(3)cmd命令行概述cmd是command的缩写,即命令行。

在Windows老版本系统下输入command就可以打开命令行。

而在NT系统上可以输入cmd来打开,在windows2000后被cmd替代,利用CMD命令查询系统的信息或者是判断网络的好坏。

对于本次毕业设计,用到的主要命令有:Ping、Nslookup、Tracert、Tasklist、Taskkill、Net use、Systeminfo 等。

3 系统的实现3.1 准备阶段1.开发环境准备本系统的开发环境采用Myeclipse8.0以及JDK1.6。

2.测试环境准备为了测试系统的部分功能实现,需要额外的搭建一些系统、服务来进行测试,以达到验证结果的目的:虚拟机:VMware Workstation 7.0操作系统:Windows Server 2000 SP1POP3:IIS5.0SMTP:IIS5.0FTP:ServU 6.03.2主要功能、界面的设计系统文件及其功能图如图3.1、图3.2所示:图3.1系统文件及其功能(1)图3.2系统文件及其功能(2)3.2.1 系统菜单界面、功能的设计系统菜单是网络管理者使用该工具运行后,最先进入的界面。

该界面包含了系统的各个模块的连接,连接通过button按钮实现,包括:扫描系统、DOS工具集、字典管理、关于本系统的介绍等。

此外还包含了作者以及版本号的相关信息。

运行结果如图3.3所示:图3.3系统菜单界面连接的核心代码如下:public void actionPerformed(ActionEvent e) {if(e.getSource()==jb1){if (flag1 == true){f1=new Load();flag1 = false;}else{flag1 = true;f1.dispose();}}if(e.getSource()==jb2){if (flag2 == true){f2=new Dos();flag2 = false;}else{flag2 = true;f2.dispose();}}if(e.getSource()==jb3){if (flag3 == true){f3=new Dictionary();flag3 = false;}else{flag3 = true;f3.dispose();}}if(e.getSource()==jb4){if (flag4 == true){f4=new About();flag4 = false;}else{flag4 = true;f4.dispose();}}if(e.getSource()==jb5){System.exit(0);}}3.2.2 扫描系统界面、功能的设计扫描系统界面包含了该设计的大部分功能界面,大致可分为以下五个方面:1、本地网络监控2、端口扫描3、弱口令猜测4、漏洞扫描5、日志查询扫描系统的界面菜单主要采用了树模型结构,用户通过鼠标点击而进入相应的界面。

相关主题