版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《综合课程设计》题目:端口扫描器的实现院、系:计算机科学与工程学科专业:学号:学生姓名:指导教师:2012年10月1引言1.1课题的背景及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。入侵者们是如何找到,并打开它们的城门呢?这些城门究竟通向何处?在网络中,把这些城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜索信息的几种常用方法之一,也正是这一种方法最容易暴露入侵者的身份和意图。一般说来,扫描端口有以下目的:判断目标主机上开放了哪些服务判断目标主机的操作系统如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能使用相应的手段实现入侵。而如果管理员先掌握了这些端口服务的安全漏洞,就能采取有效的安全措施,防范相应的入侵。1.2端口扫描现状计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。端口扫描技术是发现安全问题的重要手段之一。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息,从而发现目标机的某些内在的弱点。2系统设计2.1系统主要目标本程序主要实现了:简易的TCPconnect()扫描,支持多线程;UDP扫描功能;能对单个指定的主机进行扫描或扫描指定网段内的主机;能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描;2.2开发环境及工具测试平台:WindowsXPProfessional使用软件:VisualC++6.0开发语言:C语言2.3功能模块与系统结构作为端口扫描程序,首先需要完成的功能就是对于系统操作系统的服务端口进行扫描,返回扫描结果。对于端口的扫描,包括对于本机系统服务端口,局域网内目标机系统,以及远程IP的系统服务端口进行扫描。有些时候,用户并不需要去扫描整个系统的所有端口,因为这样的话不仅会浪费大量的时间,而且可能导致难以找到自己需要了解的端口的扫描结果。所以,对于选择性地对端口进行扫描也非常重要。这当然也是扫描程序需要实现的功能之一。用户在等待扫描的时候,往往希望知道它的工作进度。这样用户可以更好地控制自己的操作。站在用户的角度思考,设置进度是程序需要完成的,这样就能知道程序扫描的进度。系统必须提供的服务是功能需求的基本,本着站在用户角度思考的原则,做出如上叙述需求,从简列举如下:扫描功能;端口选择功能;进度显示功能;端口扫描程序功能模块如下图所示:端口扫描系统端口扫描系统操作显示设置地址设置端口设置协议开始扫描进度显示结果显示程序运行流程图:开始开始开始扫描设置扫描参数(IP、端口、协议)读入用户设置的IP、端口号、协议nowAddr=StartAddri=0初始化进度条进行TCP扫描nowAddr<=EndAddri++i<totalPort进行UDP扫描显示打开端口AfxBeginThread(DoScanPort_TCP,&inforabout,0,0,0,NULL)nowAddr++nowAddr<=EndAddrnowAddr=StartAddri=0i<totalPortDoScanPort_UDP(&inforabout)i++显示打开端口nowAddr++结束是是是是是是否否否否否否3系统功能程序设计本程序主要实现了简易的TCPconnect()扫描和UDP扫描功能,对TCP扫描支持多线程扫描,UDP扫描仅支持单线程。基本过程:获取本机IP分割字符串函数的实现获取待扫描的IP地址获取待扫描的端口号指定端口号的初始化指定端口号的保存3.1TCPconnect()扫描这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。3.1.1基本原理调用connect()函数,根据返回值来判断端口是否打开的,connect()函数返回0说明建立连接成功,说明该端口是打开的,就将该端口保存进静态字符串变量中,然后关闭连接,则线程数减一。RunThreadNum是用来控制最大线程数量的。UINTCPortScanDlg::DoScanPort_TCP(LPVOIDlp){ret=connect(sock,(structsockaddr*)&sin,sizeof(sin)); if(ret==0) { str.Format("%d",ntohs(sin.sin_port)); showout_tcp+=str+"|"; } closesocket(sock); RunThreadNum--;}3.1.2扫描结果的显示首先判断静态字符串变量showout_tcp是否为空,若为空说明没有端口是打开的。若存在打开的端口,则调用分割字符串函数将打开的端口号提取出来存放到Array数组中,再分别显示出来。if(showout_tcp!=""){ArrayNum=Split_CString(showout_tcp,Array,"|"); temp=0; while(temp<ArrayNum-1) { m_result.InsertItems(intRow,strId,strIp,strPort,ProtocolTCP,strOpen); temp++; intRow++;}}3.2UDP扫描这种方法由于使用的是UDP协议。由于这个协议很简单,所以扫描变得相对比较困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样就能发现哪个端口是关闭的。UDP和ICMP错误都不保证能到达,因此这种扫描就不那么可靠。而且这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定,而且本程序的UDP扫描只支持单线程。基本原理首先使用socket()函数创建套接字,再用bind()函数绑定套接字,然后向扫描的目的主机的目的端口发送UDP数据包,再等待目的主机的目的端口是否返回ICMP_PORT_UNREACH错误数据报,若收到返回的错误数据包,则说明该端口是关闭着的,否则该端口是打开的,再将打开的端口保存进静态数组中,以方便显示结果。UINTCPortScanDlg::DoScanPort_UDP(LPVOIDlp)//UDPporttoscan{ sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP); if(bind(sockfd,(sockaddr*)&SOURCE_ADDR,sizeof(SOURCE_ADDR))==SOCKET_ERROR) {} if(retval=dlg.Send_UDPinfo(S_ADDRESS,inet_addr(D_ADDRESS),Source_Port,PortToScan)==SEND_FAULT) { } elseif(retval==SEND_SET_ERROR) { elseif(retval==SEND_OK) { if((retval=dlg.Get_ICMPinfo(sockfd,&DEST_ADDR))==1) { str.Format("%d",PortToScan); showout_udp+=str+"|";}} closesocket(sockfd); return0;}4测试报告4.1扫描本机1.IP设置(1)IP设置为本地IP(192.168.190.129):(2)IP设置为127.0.0.1:2.端口设置为120-140,扫描次数设置为13.扫描结果(1)IP设置为本地IP(192.168.190.129)的扫描结果:(2)IP设置为127.0.0.1的扫描结果:设置为扫描本地IP和设置为扫描127.0.0.1时扫描结果会有差别:扫描127.0.0.1时扫描不出端口139,具体原因还不清楚。4.1.2扫描网络中其他主机1.设置IP(经过ping命令发现IP为169.254.148.31的主机能ping通)2.端口设置为120-140,扫描次数设置为1。扫描结果如下:由扫描结果可知能正常扫描,能正确扫描出端口由扫描结果可知能正常扫描,但由于没有先判断主机是否在线,所以对不在线的主机也发送了连接请求,导致扫描速度较慢。由扫描结果可知能正常扫描,但由于TCP扫描使用多线程速度较快,而UDP扫描则是单线程,所以速度较慢,所以同时进行两种协议的扫描,会使整体速度下降很大。结论在这次课程设计中,我遇到了不少的困难。大多数是对程序的设计相关,当然还是因为知识点不全,技术不成熟造成的。不过,这个过程却使我学习了不少新的知识。包括对信息安全更深层的解理。我自认为这是一次比较成功的课程设计。不知什么原因这个程序中还有一点小BUG,扫描127.0.0.1时扫描不出端口139,具体原因还不清楚。 这个程序大多时间是在我自己的机器上运行成功的,因为每次去机房有的机子的类库不全导致程序无
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全隐患监管责任制度
- 2025年西南财经大学天府学院秋季学期教师招聘107备考题库完整答案详解
- 2025年芜湖学院实验人员招聘备考题库及答案详解1套
- 2025年宝鸡蔡家坡医院招聘12人备考题库完整答案详解
- 广西钦州市教育系统2026年“钦聚英才”浦北县专场集中招聘急需紧缺人才备考题库及参考答案详解一套
- 清真食品安全责任制度
- 公务出行报销及责任制度
- 市场员工岗位责任制度
- 幼儿园工会岗位责任制度
- 法官谈谈司法责任制度
- 甲状旁腺护理查房课件
- DB35-T 2142-2023 在用货车油箱柴油采样规程
- 固定式真空绝热压力容器定期检验
- GB 18279-2023医疗保健产品灭菌环氧乙烷医疗器械灭菌过程的开发、确认和常规控制要求
- 新能源汽车概论(中职新能源汽车专业)PPT完整全套教学课件
- 天津高考英语词汇3500
- 知木林乡知木林村传统村落环境保护项目环评报告
- 铁路建设项目甲供甲控物资设备目录
- 平衡皮肤生态环境2对于肌肤护理起到课件
- 茶与茶文化-红茶课件
- 《汽车电路识图》课程标准
评论
0/150
提交评论