资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1网络安全程序设计结课论文端口扫描程序设计2目录第一章 序言 .2第二章 系统设计 .52.1 运行环境及语言 .52.2 系统功能 .52.3 程序运行流程图 .52.4 程序设计过程 .62.41 创建工程 .62.42 主机端口扫描程序设计流程 .82.43 主要代码 .92.5 运行结果测试 .13第三章 总结及心得 .153.1 总结 .153.2 心得体会 .15第四章 参考文献 .153第一章 序言1.1 背景Internet 快速的发展,为我们带来了方便同时也带给了我们信息安全担忧。在计算机信息安全管理中可以通过端口扫描收集系统的信息来自动监测远程或本地主机安全性弱点的程序,可以发现远程服务器的各种 tcp 端口的分配及提供的服务与他们的软件版本。从而让管理员间接的或直观的了解到远程主机所存在的安全问题。从而端口扫描技术得到人们的重视。1.2 目的该文章对端口扫描技术的原理和应用进行了阐述,并设计了一个简单的基于 windows 平台上的端口扫描系统。 此程序主要完成了 TCP connect()扫描和 UDP 扫描功能。TCP 扫描支持多线程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。此端口扫描程序能快速地进行 TCP 扫描,准确地检测出对 TCP 协议开放的端口。而对于 UDP 扫描只支持单线程,速度较慢。扫描结果以列表的形式直观地展现出来。1.3 端口扫描概述网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基4础上,所以对端口扫描技术的研究有着非常重要的现实意义。 每一个网络主机都相当于一个“房间” ,黑客能否进入“房间” ,取决于是否发现了打开的“门窗” 。也就是说,能否入侵网络主机,或者网络主机是否安全,关键在于能否查出网络主机的系统信息。而端口是主机与外界通讯交流的数据出入口,即是“门窗” 。端口分为硬件端口和软件端口,所谓硬件端口又称为接口,包括:USB 端口、串行端口、并行端口等。软件端口一般指网络中面向连接服务(TCP)和无连接服务(UDP)的通讯协议的端口。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。通过端口扫描,发现系统的安全漏洞。它使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种手段1.4 端口扫描的原理端口有两种,UDP 端口和 TCP 端口。由于 UDP 端口是面向无连接的,从原理的角度来看,没有被扫描的可能,或者说不存在一种迅速而又通用的扫描算法;而 TCP 端口具有连接定向(Connection Oriented)的特性(即是有面向连接的协议) ,为端口的扫描提供了基础。 TCP 建立连接时有三次握手:首先,Client 端往 Server 某一端口发送请求连接的 SYN 包,如果 Server 的这一端口允许连接,就会给 Client 端发一个 ACK 回包,Client 端收到 Server 的 ACK 包后再给 Server 端发一个 ACK 包,TCP 连接正式建立,这就是连接5成功的过程。当 Client 端往 Server 某一端口发送请求连接的 SYN包,此时若 Server 的这一端口不允许连接,就会给 Client 端发一个 RST 回包, Client 端收到 Server 的 RST 包后再给 Server 端发一个 RST 包,这就是连接失败的过程。基于连接的建立过程,可以想到,假如要扫描某一个 TCP 端口,可以往该端口发一个 SYN 包,如果该端口处于打开状态,我们就可以收到一个 ACK,也就是说,如果收到 ACK,就可以判断目标端口处于打开状态,否则,目标端口处于关闭状态。这就是 TCP 端口扫描的基本原理第二章 系统设计2.1 运行环境及语言运行环境:Visual C+ 6.0 语言:c+62.2 系统功能简易的 TCP connect()扫描,支持多线程; UDP 扫描功能; 能对单个指定的主机进行扫描或扫描指定网段内的主机; 能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。2.3 程序运行流程图开 始输入 ip 和端口判断 ip 和端口合法开始扫描是否2.4 程序设计过程2.41 创建工程使用 VC+的应用程序生成向导(MFC AppWizardexe)创建一个基于对话框的工程,该工程的名称 201200824420fandi,如图 所示:7单击确定, 然后选择基本对话框,如图所示点击下一步,再在 Windows SocketsW前打上勾,支持 Winsock 编程,如图8接下来一直选择默认直到完成。2.42 主机端口扫描程序设计流程1.设计对话框92 按 Ctrl+W 打开类向导,添加变量如图2.43 主要代码1.在头文件 findport100114019Dlg.h 里添加private:SOCKET Socket;2. findport100114019Dlg.cpp 文件中添加如下文件包含信息:#pragma comment (lib,ws2_32.lib) / 静态链接库#include 3.编写 Tcpscan 按钮下的代码 如下:UpdateData(true); /MFC 窗口函数,用来刷新数据WSADATA WSAData;CString str;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)MessageBox(初始化 Winsock 失败!);return;Socket=socket(AF_INET,SOCK_STREAM,0); /创建连接套接字if(Socket=INVALID_SOCKET)10MessageBox(创建 Socket 失败!);WSACleanup(); return;int IpAddress; /判断域名或 IP 地址int i=0;CString r;m_ip.GetWindowText(r);IpAddress=inet_addr(r);if(IpAddress=INADDR_NONE)hostent* pHostent=gethostbyname(str);if(pHostent)IpAddress=(*(in_addr*)pHostent-h_addr).s_addr;if (m_port1m_port2)MessageBox(请确保起始 Port 不大于终止 port);WSACleanup();return;struct sockaddr_in desthost; /定义套接字地址memset(& desthost,0,sizeof(desthost);desthost.sin_family=AF_INET;/desthost.sin_port=htons(atoi(m_Port);desthost.sin_addr.s_addr=IpAddress;for(unsigned int a =m_port1;ah_addr).s_addr;/*if (m_port1m_port2)MessageBox(请确保起始 Port 不大于终止 port);WSACleanup();return;*/struct sockaddr_in desthost; /定义套接字地址memset(&desthost,0,sizeof(desthost);desthost.sin_family=AF_INET;/desthost.sin_port=htons(atoi(m_Port);desthost.sin_addr.s_addr=IpAddress;for(unsigned int a =m_port1;a=m_port2;a+)desthost.sin_port=htons(a);char *SendBuf;SendBuf=new char2;memset(SendBuf,0,2);int nSend=sendto(Socket,SendBuf,1,0,( struct sockaddr*)&desthost,sizeof(desthost);if(nSend=SOCKET_ERROR)MessageBox(UDP 包发送失败!);closesocket(Socket);WSACleanup();return;Sleep(500);sockaddr_in SourceHost;int SourceSize;SourceSize=sizeof(SourceHost);memset(&SourceHost,0,SourceSize);char *RecvBuf;RecvBuf=new char2;memset(RecvBuf,0,2);int nRecv;nRecv=re
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号