端口扫描程序的设计与实现报告_第1页
端口扫描程序的设计与实现报告_第2页
端口扫描程序的设计与实现报告_第3页
端口扫描程序的设计与实现报告_第4页
端口扫描程序的设计与实现报告_第5页
已阅读5页,还剩73页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指导老师评阅成绩表学习与工作态度(30%)选题的价值与意义(10%)文献综述(10%)研究水平与设计能力(20%)课程设计说明说(论文)撰写质量(20%)学术水平与创新(10%) 总分指导老师签名: 年 月 日课程设计答辩记录及评价表学生讲述情况教师主要提问记录学生回答问题情况评价参考标准评分项目 分值 优 良 中 及格 差 评分 总分选题的价值与意义 10 9 8 7 6 4文献综述 10 9 8 7 6 4研究水平与设计能力 20 19 17 15 13 10课程设计说明书(论文)撰写质量 20 19 17 15 13 10学术水平与创新 10 9 8 7 6 4答辩评分答辩效果 30 28 25 22 19 15是否同意论文(设计)通过答辩 同意 不同意答辩小组成员签名答辩小组组长签名: 年 月 日课程设计成绩评定表评分项目 评分 比例 分数 课程设计总 分成绩汇总指导老师评分 50%课程设计成绩评价表答辩小组评分 50%成 都 信 息 工 程 学 院课 程 设 计题目:端口扫描程序的设计与实现作者姓名:班 级:学 号:指 导 教 师 :日 期: 2011 年 6 月 3 日作者签名:封面端口扫描程序的设计与实现摘 要计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。端口扫描技术是发现安全问题的重要手段之一。本程序是在 Windows 系统中使用 C 语言用 MFC 完成的一个端口扫描程序。此程序主要完成了 TCP connect()扫描和 UDP 扫描功能。TCP 扫描支持多线程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。此端口扫描程序能快速地进行 TCP 扫描,准确地检测出对 TCP 协议开放的端口。而对于 UDP 扫描只支持单线程,速度较慢。扫描结果以列表的形式直观地展现出来。关键词:端口扫描、TCP 扫描、UDP 扫描、TCP 多线程扫描目 录1 引言 .11.1 课题的背景及意义 .11.2 端口扫描现状 .12 系统设计 .12.1 系统主要目标 .12.2 开发环境及工具 .12.3 功能模块与系统结构 .23 系统功能程序设计 .43.1 获取本机 IP.43.2 分割字符串函数的实现 .43.3 获取待扫描的 IP 地址 .53.4 获取待扫描的端口号 .53.4.1 指定端口号的初始化 .63.4.2 指定端口号的保存 .73.5 TCP CONNECT() 扫描 .83.5.1 基本原理 .83.5.2 扫描多个主机多端口多线程的实现 .83.5.3 扫描结果的显示 .93.6 UDP 扫描 .103.6.1 基本原理 .103.6.2 计算效验和 .113.6.3 发送 UDP 数据包 .113.6.4 接收 ICMP 数据包 .124 测试报告 .124.1 TCP 扫描检测 .124.1.1 扫描本机 .124.1.2 扫描网络中其他主机 .134.1.3 扫描 IP 段 .134.2 UDP 扫描检测 .144.2.1 扫描本机 .144.1.2 扫描网络中其他主机 .154.3 TCP、UDP 一起扫描 .16结 论 .17参考文献 .1711 引言1.1 课题的背景 及意义网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。入侵者们是如何找到,并打开它们的城门呢?这些城门究竟通向何处?在网络中,把这些城堡的“城门”称之为计算机的“端口” 。端口扫描是入侵者搜索信息的几种常用方法之一,也正是这一种方法最容易暴露入侵者的身份和意图。一般说来,扫描端口有以下目的:判断目标主机上开放了哪些服务判断目标主机的操作系统如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能使用相应的手段实现入侵。而如果管理员先掌握了这些端口服务的安全漏洞,就能采取有效的安全措施,防范相应的入侵。1.2 端口扫描现状计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。端口扫描技术是发现安全问题的重要手段之一。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。扫描器通过选用远程TCP/IP 不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息,从而发现目标机的某些内在的弱点。2 系统设计2.1 系统主要目标本程序主要实现了:简易的 TCP connect()扫描,支持多线程;UDP 扫描功能;能对单个指定的主机进行扫描或扫描指定网段内的主机;能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描;2.2 开发环境及工具测试平台:Windows XP Professional使用软件:Visual C+ 6.0开发语言:C 语言22.3 功能模块与系统结构作为端口扫描程序,首先需要完成的功能就是对于系统操作系统的服务端口进行扫描,返回扫描结果。对于端口的扫描,包括对于本机系统服务端口,局域网内目标机系统,以及远程 IP 的系统服务端口进行扫描。有些时候,用户并不需要去扫描整个系统的所有端口,因为这样的话不仅会浪费大量的时间,而且可能导致难以找到自己需要了解的端口的扫描结果。所以,对于选择性地对端口进行扫描也非常重要。这当然也是扫描程序需要实现的功能之一。用户在等待扫描的时候,往往希望知道它的工作进度。这样用户可以更好地控制自己的操作。站在用户的角度思考,设置进度是程序需要完成的,这样就能知道程序扫描的进度。系统必须提供的服务是功能需求的基本,本着站在用户角度思考的原则,做出如上叙述需求,从简列举如下:扫描功能;地址选择功能;端口选择功能;进度显示功能;端口扫描程序功能模块如下图所示:端口扫描系统操作 显示设置地址设置端口设置协议开始扫描进度显示结果显示3程序运行流程图:开始开始扫描设置扫描参数(IP、端口、协议 )读入用户设置的 IP、端口号、协议nowAddr=StartAddri=0初始化进度条进行 TCP 扫描nowAddrh_addr_listi!= NULL; i+ )/*对每一个 IP 地址进行处理*/pszAddr = inet_ntoa (*(struct in_addr *)pHost-h_addr_listi);break;3.2 分割字符串函数的实现由于扫描结果是使用静态字符串保存的,所以最后显示的时候,需要用到分割字符串函数,来将字符串中扫描出的端口号分离出来显示。本函数主要是通过 Find()函数来查找用作分隔符的字符串在待查找的字符串中的位置,然后通过 Add()函数将分隔符之间的字符保存进数组中,来达到分割字符的目的。while( -1 != pos )if( -1 = pre_pos )pos = source.Find(division,pos);elsepos = source.Find(division,(pos+1);if( -1 = pre_pos )iFirst = 0;if( -1 = pos )nCount = source.GetLength();elsenCount = pos; elseiFirst = pre_pos+len;5if( -1 != pos )nCount = pos - pre_pos - len;else nCount = source.GetLength()-pre_pos-len;dest.Add(source.Mid(iFirst,nCount);pre_pos = pos;3.3 获取待扫描的 IP 地址通过判断选择的哪个 Radio Button 的值,来选择从对应的 IP Address 控件中读入用户输入的值,若是单个的 IP 则将开始地址 StartAddr 和结束地址 EndAddr 都赋值为 IP Address 控件的值;若是 IP 范围,则第一个 IP 地址赋值给 StartAddr,最后一个 IP 地址赋值给 EndAddr。void CPortScanDlg:setAddr(DWORDm_conf_IP.m_IP_Self.GetAddress(EndAddr);break;case 1:m_conf_IP.m_IP_Design.GetAddress(StartAddr);m_conf_IP.m_IP_Design.GetAddress(EndAddr);break;case 2:m_conf_IP.m_IP_Start.GetAddress(StartAddr);m_conf_IP.m_IP_End.GetAddress(EndAddr);break;default:break;3.4 获取待扫描的端口号首先读入用户设置的允许的最大线程数。再通过判断选择的哪个 Radio Button 的6值,来选择从对应的 Edit Box 控件中读入用户输入的值。若是指定的端口号,则循环读入 Edit Box 中的端口号 (一个端口号占用一行,一次读入一行),每行的字符不超过 9 字符,再在读入的每行字符的末尾添加字符串结束标记 0,再通过 atoi()函数把字符型转换为整型,存放在定义的数组结构中,并保存端口号的总个数。若是端口范围,则第一个端口号的值和最后一个端口号的值分别读入存放在定义的结构体中。void CPortScanDlg:setPort(tag_PORTS *pScanParam,intswitch(m_conf_Port.m_Port)case 0:short nCount = 0;char buff10;for(int i=0; inArrOfPortsnCount+= a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论