网络安全设计报告2.docx

上传人:b****1 文档编号:1753339 上传时间:2022-10-23 格式:DOCX 页数:14 大小:413.82KB
下载 相关 举报
网络安全设计报告2.docx_第1页
第1页 / 共14页
网络安全设计报告2.docx_第2页
第2页 / 共14页
网络安全设计报告2.docx_第3页
第3页 / 共14页
网络安全设计报告2.docx_第4页
第4页 / 共14页
网络安全设计报告2.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

网络安全设计报告2.docx

《网络安全设计报告2.docx》由会员分享,可在线阅读,更多相关《网络安全设计报告2.docx(14页珍藏版)》请在冰豆网上搜索。

网络安全设计报告2.docx

网络安全设计报告2

网络安全课程设计报告

 

题目:

端口扫描程序设计

 

专业网络工程

学号姓名B12070405彭慧珺

B12070408魏园园

指导教师董小燕

日期2014.12.2

 

评分

分细则

评分项

优秀

良好

中等

遵守机房规章制度

实验原理分析与设计

课题功能实现情况

设计验收与答辩

课程设计报告书写

简短评语

 

教师签名:

年月日

评分等级

备注

端口扫描程序设计

一、设计目的和任务

扫描器是网络信息收集的一种方法,是入侵者搜集信息的几种常用手法之一,也正是这一过程最容易使入侵者暴露自己的身份和意图。

如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能够使用相应的手段实现入侵。

从功能上可分为漏洞扫描器和端口扫描器。

根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。

通过此次课程设计,能够掌握端口的基础知识,掌握扫描器的基本原理并设计实现端口扫描。

本程序主要实现:

简易的端口扫描,支持多线程,并可指定线程数进行端口扫描,并记录时间;能对指定的主机进行端口扫描;能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描;能识别部分开放端口所提供的服务;以及使端口扫描器具有简单易懂美观的用户图形界面。

二、设计原理

2.1关于攻击

  Internet的网络通信大多是建立在TCP和UDP协议之上的,各个主机遵循着TCP/IP协议封装数据包进行通信。

 

   根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。

ØTCP端口:

即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。

常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。

ØUDP端口:

即用户数据包协议端口,无需在客户端和服务器之间建立连接,可靠性得不到保障。

常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QICQ使用的8000和4000端口等等。

本程序通过TCP connect扫描:

 

   通过调用socket函数connect()连接到目标计算机上,完成一次完整的三次握手过程。

如果端口处于侦听状态,那么connect()就能成功返回。

否则,这个端口不可用,即没有提供服务。

 

   优点:

稳定可靠,不需要特殊的权限。

 

   缺点:

扫描方式不隐蔽,服务器日志会记录下大量密集的连接和错误记录 ,并容易被防火墙发现和屏蔽。

2.2关于防御

1. 关闭闲置和有潜在危险的端口

  这个方法有些“死板”,它的本质是——将所有用户需要用到的正常计算机端口外的其他端口都关闭掉。

因为就黑客而言,所有的端口都可能成为攻击的目标。

换句话说“计算机的所有对外通讯的端口都存在潜在的危险”,而一些系统必要的通讯端口,如访问网页需要的HTTP(80端口);QQ(4000端口)等不能被关闭。

  2. 检查各端口,有端口扫描的症状时,立即屏蔽该端口

  这种预防端口扫描的方式显然用户自己手工是不可能完成的,或者说完成起来相当困难,需要借助软件。

这些软件就是我们常用的网络防火墙.防火墙的工作原理是:

首先检查每个到达你的电脑的数据包,在这个包被你机上运行的任何软件看到之前,防火墙有完全的否决权,可以禁止你的电脑接收Internet上的任何东西。

当第一个请求建立连接的包被你的电脑回应后,一个“TCP/IP端口”被打开;端口扫描时,对方计算机不断和本地计算机建立连接,并逐渐打开各个服务所对应的“TCP/IP端口”及闲置端口,防火墙经过自带的拦截规则判断,就能够知道对方是否正进行端口扫描,并拦截掉对方发送过来的所有扫描需要的数据包。

三、实验环境和总体设计

3.1实验环境

开发工具:

J2SDK1.7.0Eclipse

语言:

Java

运行环境:

Windows2000以上

3.2总体设计

多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序。

IP设置应为所在主机的IP地址,起始端口和结束端口应为0~65535之间的一个数,且起始端口应小于结束端口的大小。

线程数为0~200之间的一个数。

点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕。

功能分为以下四模块:

1图像显示功能:

显示界面图形。

②端口扫描功能:

扫描开放的端口,并将扫描到的开放端口号送到前台。

③多线程功能:

当客户端要求与服务器端建立连接时,服务器端就将用到多线程功能,为每一个建立起来的连接创建一个线程。

④异常抛出功能:

对于明显的错误,提示出错误的类型并结束程序的运行。

界面设置构思图

图1

界面使用构思

当出现如图所示的界面时,填写好要扫描的IP地址,需要扫描的端口范围和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕。

流程图如下:

四、详细设计步骤

本程序使用了为主要的Scanner类和Scan类。

Scan类的作用是创建线程扫描端口,然后把结果显示到前台。

Scanner类的作用是构造前台布局,调用Scan类添加事件处理,对输入进行错误判断,如果输入不在允许的范围之内则显示相关错误。

以下是四模块的详细设计步骤:

4.1图像显示功能

界面设计

本程序采用小窗口形式,外围大小为170mm*90mm,字体采用宋体五号,结果显示区域框架大小为160mm*45mm,底色为粉红,结果显示字幕为主机地址加开放端口。

其余地方设置按钮和扫描的主机地址、端口和线程数。

设计的预计页面图形如图:

图2

本程序调用一些类和包,比如软件包java.awt.color、java.awt.event、io.IOException、Javax.Swing、jvnet.substance.*。

1.java.awt.color包:

提供用于颜色空间的类。

它包含了基于国际色彩联盟(ICC)配置文件格式规范的颜色空间实现。

e.g.Result.setBackground(Color.PINK);//设置窗口为粉红

2.java.awt.event包:

提供处理由AWT组件所激发的各类事件的接口和类。

此包定义了事件和事件侦听器,以及事件侦听器适配器,它是让事件侦听器的编写过程更为轻松的便捷类。

e.g.publicvoidactionPerformed(ActionEvente){

Stringcmd=e.getActionCommand();

if(cmd.equals("Start"))

…………}

3.Javax.Swing:

由所有Java图形用户界面(GUI)组件所构成,它们可以提供比本地平台GUI组件更多的功能。

Swing包的组成:

javax.swing,javax.swing.borde,javax.swing.colorchooser,avax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.tree等接口

常用Swing组件:

按钮:

JButton

文本区:

JTextArea

文本字段:

JTextField

在本程序中使用如下:

//设置主窗体位置和大小

mainFrame.setBounds(180,200,550,300);

//设置扫描按钮和退出按钮

Start.setActionCommand("Start");

Start.addActionListener(this);

Exit.setActionCommand("Exit");

Exit.addActionListener(this);

4.2端口扫描功能

在本程序中后台端口扫描关键代码使用的两个类,下面介绍这两个类的常用方法。

InetSocketAddress类构造方法如下:

●InetSocketAddress(InetAddressaddr,intport):

根据IP地址和端口号创建套接字地址。

Socket类常用方法如下:

●Socket():

通过系统默认类型的SocketImpl创建未连接套接字

●Socket(InetAddressaddress,intport):

创建一个流套接字并将其连接到指定IP地址的指定端口号。

●voidbind(SocketAddressbindpoint):

将套接字绑定到本地地址。

●voidclose():

关闭此套接字。

●voidconnect(SocketAddressendpoint,inttimeout):

将此套接字连接到具有指定超时值的服务器。

关键代码如下:

SocketAddresssockaddr=newInetSocketAddress(hostAddress,i);

Socketscans=newSocket();

inttimeoutMs=50;

scans.connect(sockaddr,timeoutMs);//将此套接字连接到具有指定超时值的服务器scans.close();//关闭此套接字。

4.3多线程功能

用递归函数实验多线程

使用关键算法如下:

for(inti=minPort;i<=maxPort;){

if((i+threadNum)<=maxPort){

newScan(i,i+threadNum).start();

i+=threadNum;}

else{

newScan(i,maxPort).start();

i+=threadNum;}}

 

4.4异常抛出功能

使用io.IOException包:

用来处理io的错误,在以后的程序中调用这个函数的时候就必须用try和catch来捕获异常,否则编译会报错,这主要涉及到java的安全机制。

e.g.try{

……..

}

catch(NumberFormatExceptione1){

DLGINFO.setText("错误的端口号或线程数!

端口号和线程数必须为整数!

");

return;

}

 

4.5总流程图如下:

 

 

四、结果测试与分析

4.1运行结果

1.运行界面:

 

图3

2.未开始扫描状态:

 

图4

3.正常扫描时:

图5

4.起始端口设置有误扫描开始后状态报错:

图6

图7

5.结束端口设置有误扫描开始后状态报错:

 

图8

6.线程数设置错误报错:

 

图9

7.另外我们计算了扫描器的扫描时间,我们能发现线程数的增多能有效减少扫描器的扫描时间

图10

第一个红框是线程数为10时的扫描时间,而线程数为20所用时间为3000ms,可见线程数增多缩短了扫描时间

4.2防御措施

根据防御原理,我们通过开启系统防火墙来对端口扫描进行防御

图11防火墙关闭

图12防火墙开启

从图中

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

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1