ImageVerifierCode 换一换
格式:DOC , 页数:32 ,大小:600.50KB ,
资源ID:13119592      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13119592.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机网络课程设计-基于icmptcp的网段端口扫描-c语言编写Word下载.doc)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机网络课程设计-基于icmptcp的网段端口扫描-c语言编写Word下载.doc

1、网段和端口扫描程序一、 概述11.1端口扫描11.2端口扫描常用技术简介21.2.1 connect()扫描21.2.2 SYN扫描31.2.3 XMAS-TREE扫描31.3网段扫描4二、需求分析52.1 设计功能52.2 设计要求5三、概要设计53.1设计概念和处理流程53.2 结构设计73.2.1 数据结构及定义73.2.2 接口函数8四、细设设计94.1 实现原理94.1.1 connect()函数端口扫描的原理94.1.2 ICMP网段扫描的原理114.2 函数实现144.2.1 初始化winsock动态链接库144.2.3地址解析154.2.4 计算检验和154.2.5 网段扫描1

2、64.2.6 端口扫描17五、 总结与体会195.1 程序运行与调试195.2 体会20六、 参考文献216.1 参考书目216.2 引用网址21一、 概述1.1端口扫描端口扫描是指利用TCP协议的面向连接的特性,使用本地计算机试图与目的主机的某个端口建立连接,以此来试探目的主机的一些端口的具体状态,如是否打开,若是打开的又运行什么样的程序(利用熟知端口很容易知道)。端口扫描有很多技术实现。其中最常用的有:connect()扫描,TCP SYN扫描,TCP FIN扫描,TCP NULL扫描,XMAS- TREE扫描(圣诞树扫描)等等。在本程序中使用的是connect()扫描。1.2端口扫描常用

3、技术简介1.2.1 connect()扫描此扫描的原理是,本地计算机利用TCP协议的三次握手原理(RFC 793)试图与网络上一台主机或服务器建立TCP连接。如果目的主机或服务器回送SYN/ACK则说明该端口开放,否则该端口关闭。具体的过程:1. Client端发送SYN2. Server端发送SYN/ACK(该端口开放),或Server端发送RST/ACK(该端口关闭),若无应答可能目的主机或服务器不可达。3. Client端发送ACK,连接建立。4. Client端主动断开连接,连接关闭。过程图如下:1.2.2 SYN扫描SYN扫描前两步与connect()扫描相同,只是最后一步,Clie

4、nt端发送的不是ACK确认报文而是RST报文,这样三次握手过程就没有完成,Client与Server也就没有建立TCP连接,因此前述过程不会被Sever端记录到系统日志中,扫描更加隐蔽。1.2.3 XMAS-TREE扫描通过发送带有以下标志位TCP数据包URG,PSH,FIN来试探主机。在目标端口开放的情况下不放回任何信息。端口开放:发送URG/PSH/FIN,没有响应。端口关闭:1.发送URG/PSH/FIN,没有响应。2响应RST。1.3网段扫描网段扫描是指利用ICMP(因特网控制报文协议)对某一网段的所有IP地址发送ICMP报文,测试IP地址所对应的主机具体情况(如是否开机等)。所以对目

5、的主机回答的ICMP报文进行分析是网段扫描的关键。常见的报文类型有:类型(type)代码(code)描述差错查询回显回答*31主机不可达端口不可达8请求回显二、需求分析2.1 设计功能实现一个扫描器,使用TCP connect、TCP SYN或TCP SYN进行端口扫描,使用 ICMP echo扫描实现IP扫描,并记录结果。2.2 设计要求Windows或Linux环境下,程序应在单机上运行。使用端口扫描对一台主机进行扫描,并显示结果,在一定的端口范围内,该主机由哪些端口是打开的。对一个网段进行IP扫描,显示结果,该网段的哪些主机是开机的。友好的界面,便于用户操作,完成全部设计功能。三、概要设

6、计3.1设计概念和处理流程程序使用Windows Sockets API编程,利用winsock2库函数提供的函数实现与主机间的连接,发送ICMP报文。详见Winsock Referen:用户首先选择要使用的功能,程序共有两大功能:端口扫描和IP网段扫描。端口扫描的主要功能有,根据用户输入的主机名或IP地址以及端口范围进行connect()扫描。当用户输入完必要的信息并击确认后,程序进行扫描,不过不建议端口区间过于庞大,等待一段时间后用户界面会显示所指定IP地址主机的端口使用情况,哪些端口是打开的,哪些是关闭的。IP网段扫描的主要功能有,用户输入某个网段起始IP地址和结束IP地址,确认后,程序

7、根据所输入的网段号,对网段类的每一个IP地址发送ICMP请求回显报文,如果主机处于开机状态那么将会回送回答报文;如果主机不可达(在同一个网内),则就能够判断该IP所对应的主机处于关机状态。当用户选择退出功能时,释放资源,程序关闭。程序流程图3.2 结构设计3.2.1 数据结构及定义所使用的宏定义,#define ICMP_ECHO_REQUEST_TYPE 8 /ICMP请求类型#define ICMP_ECHO_REQUEST_CODE 0 /ICMP请求代码#define ICMP_ECHO_REPLY_TYPE 0#define ICMP_ECHO_REPLY_CODE 0#define

8、 ICMP_MINIMUM_HEADER 8IP数据报首部,首部固定20字节,数据结构定义如下:typedef struct ip_hdrunsigned char iphVerLen; / 版本号和头长度(各占4位)unsigned char ipTOS; / 服务类型 unsigned short ipLength; / 封包总长度,即整个IP报的长度unsigned short ipID; / 封包标识,惟一标识发送的每一个数据报unsigned short ipFlags; / 标志unsigned char ipTTL; / 生存时间,就是TTLunsigned char ipPro

9、tocol; / 协议,可能是TCP、UDP、ICMP等unsigned short ipChecksum; / 校验和unsigned long ipSource; / 源IP地址unsigned long ipDestination; / 目标IP地址IP_HDR,*PIP_HDR;IP数据报格式ICMP报文首部格式,8个字节,数据结构定义如下:typedef struct icmp_hdrunsigned char icmp_type; /类型unsigned char icmp_code; /代码unsigned short icmp_checksum; /检验和unsigned sh

10、ort icmp_id; /唯一请求ID,通常使用进程PIDunsigned short icmp_sequence; /序列号unsigned long icmp_timestamp; /时间戳 ICMP_HDR,*PICMP_HDR;3.2.2 接口函数Void InitializeWinsock(),初始化Winsock动态链接库。Void Resolove(char hostname),解析主机名(或IP地址),该函数是公共接口函数,端口扫描和IP网段扫描都使用该函数解析地址。函数首先判断用户输入的IP是十进制点分地址还是域名地址,然后分别调用inet_addr()和gethostby

11、name()库函数处理成unsigned long型数据。Void ResoloveIPAddr(char starthost,char endhost,int *start,int *end),此函数用户IP网段扫描,将用户输入的起始IP地址和结束IP地址转换为int类型数据。Char * Assemble(char startehost,int cur),将当前IP地址转化为字符串类型的IP地址。void SegmentScan(char starthost,char endhost),通过发送ICMP,检测某个网段上主机的具体状态。函数的两个参数starthost、endhost分别代表

12、用户给定的起始IP地址和结尾IP地址。该函数内部调用了InitializeWinsock()、Resolove()、ResoloveIPAddr()、Assemble()、以及库函数sendto()和recvfrom()。通过这些函数的调用实现了对指定网络区间的ICMP扫描。connectScan(char startport,char endport,hostname),该函数把用户输入的主机名(或IP地址)写入sin_addr.s_addr,起始端口写入sin_port中。函数调用了InitializeWinsock()、Resolove()以及库函数connect()、shutdown()。实现了利用connect()系统函数对指定主机端口区间扫描。四、细设设计4.1 实现原理4.1.1 connect()函数端口扫描的原理首先要明白TCP报文段的首部格式。现在分别介绍各个字段的具体含义。(1)源端口和目的端口 各占两个字节。端口是运输层与应用层的服务。(2)序号 占4个字节。TCP把传送的数据流中的每一个字节都编上一个序号。(3)确认号 占4个字节。是指期望对方的下一个报文段的数据的第一个字

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

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