- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计 任 务 书
【设计目的】
加深对TCP/IP协议的理解,熟悉Socket编程
【设计任务】
实现一个扫描器,必须能够完成以下所有功能:使用TCP connect、TCP SYN和TCP FIN进行端口扫描,使用ICMP echo 扫描实现IP扫描。并把结果记录下来。
【设计要求】
Windows或Linux环境下,程序在单机上运行。
演示:使用端口扫描对一台主机进行扫描,并显示结果(一台主机上有哪些端口是打开的)。对一个网段进行IP扫描,显示结果(一个网段内有哪些主机是开机的)。
友好的用户界面
【设计要求】
程序源代码,必须有详细的注释。
项目设计报告。
网段和端口扫描程序
一、 概述 1
1.1端口扫描 1
1.2端口扫描常用技术简介 2
1.2.1 connect()扫描 2
1.2.2 SYN扫描 3
1.2.3 XMAS-TREE扫描 3
1.3网段扫描 4
二、需求分析 5
2.1 设计功能 5
2.2 设计要求 5
三、概要设计 5
3.1设计概念和处理流程 5
3.2 结构设计 7
3.2.1 数据结构及定义 7
3.2.2 接口函数 8
四、细设设计 9
4.1 实现原理 9
4.1.1 connect()函数端口扫描的原理 9
4.1.2 ICMP网段扫描的原理 11
4.2 函数实现 14
4.2.1 初始化winsock动态链接库 14
4.2.3地址解析 15
4.2.4 计算检验和 15
4.2.5 网段扫描 16
4.2.6 端口扫描 17
五、 总结与体会 19
5. 19
5.2 体会 20
六、 参考文献 21
6.1 参考书目 21
6.2 引用网址 21
3.1设计概念和处理流程
程序使用Windows Sockets API编程,利用winsock2库函数提供的函数实现与主机间的连接,发送ICMP报文。详见Winsock Referen:/en-us/library/windows/desktop/ms741416(v=vs.85).aspx
用户首先选择要使用的功能,程序共有两大功能:端口扫描和IP网段扫描。端口扫描的主要功能有,根据用户输入的主机名或IP地址以及端口范围进行connect()扫描。当用户输入完必要的信息并击确认后,程序进行扫描,不过不建议端口区间过于庞大,等待一段时间后用户界面会显示所指定IP地址主机的端口使用情况,哪些端口是打开的,哪些是关闭的。IP网段扫描的主要功能有,用户输入某个网段起始IP地址和结束IP地址,确认后,程序根据所输入的网段号,对网段类的每一个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 ICMP_MINIMUM_HEADER 8
IP数据报首部,首部固定20字节,数据结构定义如下:
typedef struct ip_hdr
{
unsigned char iphVerLen; // 版本号和头长度(各占4位)
unsigned char ipTOS; // 服务类型
unsigned short ipLength; // 封包总长度,即整个IP报的长度
unsigned short ipID; // 封包标识,惟一标识发送的每一个数据报
unsigned short ipFlags; // 标志
unsigned char ipTTL; // 生存时间,就是TTL
unsigned char ipProtocol; // 协议,可能是TCP、UDP、ICMP等
unsigned short ipChecksum; // 校验和
unsigned long ipSource; // 源IP地址
unsigned long ipDestinatio
文档评论(0)