端口扫描器的设计与实现

上传人:m**** 文档编号:495169394 上传时间:2024-02-04 格式:DOCX 页数:15 大小:15.97KB
返回 下载 相关 举报
端口扫描器的设计与实现_第1页
第1页 / 共15页
端口扫描器的设计与实现_第2页
第2页 / 共15页
端口扫描器的设计与实现_第3页
第3页 / 共15页
端口扫描器的设计与实现_第4页
第4页 / 共15页
端口扫描器的设计与实现_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《端口扫描器的设计与实现》由会员分享,可在线阅读,更多相关《端口扫描器的设计与实现(15页珍藏版)》请在金锄头文库上搜索。

1、端口扫描器的设计与实现网络与信息安全课程设计网络中的每一台计算机如同一座城堡,在这些城堡中,有的对外完全 开放,有的却是紧锁城门。入侵者们是如何找到,并打开它们的城门的呢? 这些城门究竟通向城堡的何处呢?在网络技术中,把这些城堡的“城门” 称之为计算机的“端口”。端口扫描是入侵者搜集信息的几种常用手法之 一,也正是这一过程最容易使入侵者暴露自己的身份和意图。一般来说, 扫描端口有如下目的:判断目标主机上开放了哪些服务;判断目标主 机的操作系统;如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他 们就能够使用相应的手段实现入侵,本课程设计将会通过用JAVA语言实 现一个小的端口扫描软件

2、,详细描述端口扫描的原理,分析端口扫描所涉 及的问题,以便更加清楚地了解入侵者如何扫描目标主机的端口,同时掌 握如何确保本机的安全性,为将来设计更为安全的系统打下牢固基础。、网络基础知识4 1、端口的基本概42、端口的分类4二、端口扫描的基本原5 1、基本原理52、基于JAVA语言实现的核心代码5三、端口扫描器视图61、工作窗口62、异常窗口63、窗口核心代码6四、多线程快速扫描71、多线程机制72、多线程核心代码8五、用户使用方法91、页面说明92、按主机名扫描93、按IP地址扫描9六、常用端口9七、异常检测10结 语.12一、网络基础知识1、端口的基本概念“端口”在计算机网络领域中是个非常

3、重要的概念。它是专门为计算 机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个 “软插槽”。如果有需要的话,一台计算机中可以有上万个端口。端口是由计算机的通信协议TCP/IP协议定义的。其中规定,用IP地 址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。 具体来说,就是用IP端口来定位一台主机中的进程。可以做这样的比喻, 端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让 两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多 入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果 要和远程主机A的程序通信,那么只要把数据

4、发向A端口就可以实现通信 了。可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之 为该进程正在监听,那么就会出现与它相对应的端口。由此可见,通过扫 描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。2、端口的分类端口是一个16bit的地址,用端口号进行标识不同作用的端口,参见 表2-2和表2-3。端口一般分为两类。动态端口号:动态端口的范围从1024到65535,这些端口号一般 不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运 行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分 配一个供该程序使用。比如8080端口就是分配给第一个向系统发出申请

5、的程序。在关闭程序进程后,就会释放所占用的端口号。二、端口扫描的基本原理1、基本原理端口扫描的原理其实非常简单,只是简单的利用JAVA提供库函数Socket进行调用,与每一个感兴趣的目标计算机的端口进行连接。如果 对方端口处于监听状态,那么连接就能成功。否则,这个端口不能用,既 没有提供服务。这个技术的一个最大的优点是,不需要任何权限,系统中 的任何用户都有权利使用这个调用。引入多线程机制,利用多线程扫描的好处就是速度快,如果对每个目 标端口以线性的方式使用单独的连接调用,那么将会花费相当长的时间。 多线程同时打开多个套接字,从而加速扫描。在本设计中用户可以自定义 线程的个数。此处用户还可以自

6、定义扫描方式。2、基于JAVA语言实现的核心代码在多线程的控制下,利用for循环对端口逐一扫描for(i=某某某 某某某;i某某某某某某;i+二某某某某某某)trytheTCPocket=newSocket(hotAddre,i);theTCPocket.cloe();/判断端口的类别witch(i)cae21:/对相应开放端口识别。将开放端口内容添加到显示区域,并加锁使各处同步关系。ynchronized(ThreadScan.Reult)ThreadScan.Reult.append(+i);ThreadScan.Reult.append(:+porttype+n);/对相应开放端口和没有

7、开放即连接失败的端口作记录,放入显示区。 catch(IOE 某 ceptione)/同时也对程序加锁防止出现序。ynchronized(ThreadScan.ReultAll)将所有端口内容添加到显示区域ThreadScan.ReultAll.append(+i);ThreadScan.ReultAll.append(:Cloed+n);三、端口扫描器视图1、工作窗口这是用JAVA语言实现的一个简单的端口扫描器软件,主页面视图如 下:2、异常窗口当用户操用不当,例如输入的IP地址超过255,或者端口范围大于 65535 时,用户点击“开始扫描”按钮都会抛出相应的异常,并提示错误原因。 如下图

8、示例:3、窗口核心代码publicclaThreadScanpublictaticJFramemain二newJFrame( 网络与信息安全课程设计端 口扫描器刘纪生);publictaticvoidmain(Stringarg)Submit.addActionLitener(newSubmitAction();aveButton.addActionLitener(new);main.etViible(true);java.awt.event.ActionLitener();/实现退出功能e某 itItem.addActionLitener(newjava.awt.event.ActionLi

9、tener()/实现帮助功能helpItem.addActionLitener(newjava.awt.event.ActionLitener()Stop.addActionLitener(newStopAction();Cancel.addActionLiten er(newCancleAction();OK.addActionLitener(newOKAction();/实现保存功能aveItem.addActionLitener(newjava.awt.event.ActionLitener()四、多线程快速扫描1、多线程机制在本系统中采用了多线程机制,用户可以上述工作窗口中输入所要打

10、开的线程数,对相端口范围进行扫描。多线程是指在一个程序中同时打 开多处运行单元,各线程同时执行。大大提高了扫描的速度。例如,假设用户填写的线程数为3,则其扫描过程如下所示例如,假设用户填写的线程数为1,则其扫描过程如下所示当设置1个线程时,就好比只有一个人(一个线程)在做这件事,而 但设置多个线程时,就好比是多个人分批一起做这件事。显然是多线程会 处理的更快。2、多线程核心代码publicclaTCPThreade 某 tendThreadpublicTCPThread(Stringname,intthreadnum)uper(name);thi.threadnum二threadnum;pub

11、lictaticInetAddrehotAddre;/运行函数publicvoidrun()/根据ip地址进行扫描if(type=0)/按照主机名进行端口扫描if(type=1)for(i=某某某某某某;i某某某某某某;i+二某某某某某某)/不同的端口循环扫描for(i=某某某某某某;i某某某某某某;i+二某某某某某某)theTCPocket二newSocket(hotAddre,i);theTCPocket.cloe();/启动线程for(inti=0;ima某 Thread;i+)newTCPThread(T+i,i).tart();五、用户使用方法1、页面说明首先在菜单中有“文件”“帮助

12、”选项。在“文件”中设置了“保存 扫描结果”和“退出”。用户可以点击“保存扫描结果”或者是Ctrl+S,对扫描结果进保存。也可在“帮助”菜单查看相关信息。如图在“端口范围”用户可以输入要扫描的端口的范围,默认是01000, 最大是65535。在“线程数”中用户可以自定义线程数,默认是100,最大是200。 之后是两种扫描方式的选择。扫描所有窗口中会显示所有被扫描过的不有打开和打开的端口,开放 端口中会显示所有扫描得到的开放端口。2、按主机名扫描当用户选中按主机名扫描时,需要输入将要扫描的主机名,默认是本 机localhot,用户也可以自己填写相关主机。之后点击“开始扫描”。3、按IP地址扫描当

13、用户选中按IP地址扫描时,需要输入将要扫描的主机的IP,默认 是0.0.0.0。之后点击“开始扫描”。如果用户输入的端口范围太大,这 样会导致程序扫描时间很长,这时可以点击“停止扫描”来中止扫描。六、常用端口系统默认会识别一部分常用端口,对常用端口系统将扫描出来,并随 之打印端口功能,对未能识别的开放端口,系统将随之打印“UnknownPort:Open”。代码如下:witch(i)cae21:porttype=(FTP);break;cae23:porttype=(TELNET);break;porttype=(SMTP);break;porttype=(HTTP);break;portty

14、pe=(POP);break;porttype=(netBIOS);break;porttype=(SQLServer);break;porttype=(TerminalService);break;porttype=(HTTPS);break;porttype=(Oracle);break;porttype=(UnknownPort:Open);break;cae25:cae80:cae110:cae1433:cae3389:cae443:cae1521:default:七、异常检测当用户输入的数据不合法时,系统将弹出错误窗口,并提示错误原因, 相关代码:判断起始1?是否正确,判断条件:大于0且小于等于255if(ip1255|ip2255|ip3255|iptart255)ThreadScan.DLGINFO.etTe 某 t(ip 地址为 0-255 的整数!);ThreadScan.DLGError.etViible(true);ThreadScan.Submit.etEna bled(true);/设置开始扫描按钮可用。return;判断主机名称的有效性tryTCPThread.hotAddre=InetAddre.getByName(ThreadScan.hotname

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号