欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    计算机网络课程设计报告--端口扫描器的设计与实现.docx

    • 资源ID:684022       资源大小:95.55KB        全文页数:17页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机网络课程设计报告--端口扫描器的设计与实现.docx

    课程设计报告20142015学年第一学期课程名称计算机网络设计题目客户端扫描器前言网络中的每一台计算机如同一座城堡,在这些城堡中,有的对外完全开放,有的却是紧锁城门。入侵者们是如何找到,并打开它们的城门的呢?这些城门究竟通向城堡的何处呢?在网络技术中,把这些城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜集信息的几种常用手法之一,也正是这一过程最容易使入侵者暴露自己的身份和意图。一般来说,扫描端口有如下目的:判断目标主机上开放了哪些服务;判断目标主机的操作系统;如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能够使用相应的手段实现入侵,本课程设计将会通过用JAVA语言实现一个小的端口扫描软件,详细描述端口扫描的原理,分析端口扫描所涉及的问题,以便更加清楚地了解入侵者如何扫描目标主机的端口,同时掌握如何确保本机的安全性,为将来设计更为安全的系统打下牢固基础。目录一、网络基础知识31、端口的基本概念32、端口的分类4二、端口扫描的基本原理41、基本原理42、基于JAVA语言实现的核心代码5三、端口扫描器视图61、工作窗口62、异常窗口63、窗口核心代码7四、多线程快速扫描71、多线程机制72、多线程核心代码8五、用户使用方法91、页面说明92、按主机名扫描103、按IP地址扫描10六、常用端口10七、异常检测121口14参考文献12一、网络基础知识1、端口的基本概念“端口”在计算机网络领域中是个非常重要的概念。它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。如果有需要的话,一台计算机中可以有上万个端口。端口是由计算机的通信协议TCP/IP协议定义的。其中规定,用IP地址和端作为套接字,它代表TCP连接的一个连接端,一般称为Socketo具体来说,就是用IP端口来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向A端口就可以实现通信了。可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。2、端口的分类端口是一个16bit的地址,用端口号进行标识不同作用的端口,参见表2-2和表2-3。端口一般分为两类。熟知端口号:范围从O到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP服务,80端口分配给HTTP服务,135端口分配给RPC服务等等动态端口号:动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如8080端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。二、端口扫描的基本原理1、基本原理端口扫描的原理其实非常简单,只是简单的利用JAVA提供库函数Socket进行调用,与每一个感兴趣的目标计算机的端口进行连接。如果对方端口处于监听状态,那么连接就能成功。否则,这个端口不能用,既没有提供服务。这个技术的一个最大的优点是,不需要任何权限,系统中的任何用户都有权利使用这个调用。引入多线程机制,利用多线程扫描的好处就是速度快,如果对每个目标端口以线性的方式使用单独的连接调用,那么将会花费相当长的时间。多线程同时打开多个套接字,从而加速扫描。在本设计中用户可以自定义线程的个数。此处用户还可以自定义扫描方式。2、基于JAVA语言实现的核心代码在多线程的控制下,利用for循环对端口逐一扫描for(i=XXXXXX;i<XXXXXX;i+=XXXXXX)try(theTCPsocket=newSocket(hostAddress,i);theTCPsocket.closeO;判断端口的类别switch(i)case21:对相应开放端口识别。将开放端口内容添加到显示区域,并加锁使各处同步关系。synchronized(ThreadScan.Result)ThreadScan.Result,append(z,+i);ThreadScan.Result,append(:+porttype+"n");)对相应开放端口和没有开放即连接失败的端口作记录,放入显示区。catch(IOExceptione)同时也对程序加锁防止出现序。synchronized(ThreadScan.ResultAll)将所有端口内容添加到显示区域ThreadScan.ResultAll.appendC+i);ThreadScan.ResultAll.append(:CIoSCd+n");)三、端口扫描器视图1、工作窗口这是用JAVA语言实现的一个简单的端口扫描器软件,主页面视图如下:2、异常窗口当用户操用不当,例如输入的IP地址超过255,或者端口范围大于65535时,用户点击“开始扫描”按钮都会抛出相应的异常,并提示错误原因。如下图示例:3、窗口核心代码publicclassThreadScanpublicstaticJFramemain=newJFrame("网络与信息安全课程设计端口扫描器刘纪生”);publicstaticvoidmain(Stringargs)Submit.addActionListener(newSubmitActionO);Stop.addActionListener(newStopActionO);Cancel.addActionListener(newCancIeActionO);OK.addActionListener(newOKAction();实现保存功能saveItem.addActionListener(newjava.awt.event.ActionListenerO);实现退出功能exitItem.addActionListener(newjava.awt.event.ActionListenerO实现帮助功能helpitem.addActionListener(newjava.awt.event.ActionListenerOsaveButton.addActioListener(newjava.awt.event.ActionListenerOI);main.setVisible(true);)四、多线程快速扫描1、多线程机制在本系统中采用了多线程机制,用户可以上述工作窗口中输入所要打开的线程数,对相端口范围进行扫描。多线程是指在一个程序中同时打开多处运行单元,各线程同时执行。大大提高了扫描的速度。例如,假设用户填写的线程数为3,则其扫描过程如下所示假设用户设置线程数为3,则扫描规则如下所示,端口序列如下例如,假设用户填写的线程数为1,则其扫描过程如下所示假设用户设置线程数为1,则扫描规则如下所示,端口序列下;123456789101112可141同可17118IIq20212223Ll线程A当设置1个线程时,就好比只有一个人(一个线程)在做这件事,而但设置多个线程时,就好比是多个人分批一起做这件事。显然是多线程会处理的更快。2、多线程核心代码publicclassTCPThreadextendsThreadpublicstaticInetAddresshostAddress;publicTCPThread(Stringname,intthreadnum)super(name);this.threadnum=threadnum;1运行函数publicvoidrun()根据ip地址进行扫描if(type=0)不同的端口循环扫描for(i=XXXXXX;i<XXXXXX;i+=XXXXXX)theTCPsocket=newSocket(hostAddress,i);theTCPsocket.close();)按照主机名进行端口扫描if(type=1)for(i=XXXXXX;i<XXXXXX;i+=XXXXXX)/)1启动线程for(inti=O;i<maxThread;i+)newTCPThread("T,'+i,i).start();五、用户使用方法1、页面说明首先在菜单中有“文件”“帮助”选项。在“文件”中设置了“保存扫描结果”和“退出”。用户可以点击“保存扫描结果”或者是Ctrl+S,对扫描结果进保存。也可在“帮助”菜单查看相关信息。如图VI用第Rl一代用"。林WMKM睛右MKciftU<a.慈第Mn*R>MUMo*t<.<«jh在“端口范围”用户可以输入要扫描的端口的范围,默认是O-IOo0,最大是65535。在“线程数”中用户可以自定义线程数,默认是100,最大是200o之后是两种扫描方式的选择。扫描所有窗口中会显示所有被扫描过的不有打开和打开的端口,开放端口中会显示所有扫描得到的开放端口。2、按主机名扫描当用户选中按主机名扫描时,需要输入将要扫描的主机名,默认是本机localhost,用户也可以自己填写相关主机。之后点击“开始扫描”。3、按IP地址扫描当用户选中按IP地址扫描时,需要输入将要扫描的主机的1P,默认是so。之后点击“开始扫描”。如果用户输入的端口范围太大,这样会导致程序扫描时间很长,这时可以点击“停止扫描”来中止扫描。六、常用端口系统默认会识别一部分常用端口,对常用端口系统将扫描出来,并随之打印端口功能,对未能识别的开放端口,系统将随之打印"UnknownPort:OPen”。代码如下:switch(i)case21:porttype="(FTP);break;case23:porttype="(TELNET)11;break;case25:porttype=n(SMTP)"break;case80:porttype=,(HTTP)"break;case110:porttype="(POP)"break;case139:porttype="(nelBIOS)”;break;case1433:porttype=,(SQLServer)',;break;case3389:porttype="(TerminalService)'1;break;case443:porttype="(HTTPS)"break;case1521:porttype="(Oracle)"break;default:p

    注意事项

    本文(计算机网络课程设计报告--端口扫描器的设计与实现.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开